So you want to know what time it is in Vanadiel do you? Well, I guess the first question is: Which Vanadiel? See, as it turns out, Vanadiel time varies from server to server. Since my character is on Sylph, all of the numbers I have will only apply to Sylph. All of the non absolute time values, i.e. how long is a Vanadiel day, will still be okay, but things like the reference time vary from server to server.
To keep the typing down, all Vanadiel time units (and absolute Vanadiel times) will be labeled in bold. So "1 day" means 1 Vanadiel day and "1 day" means one Earth day.
Okay, back to the problem at hand: How to calculate the current Vanadiel Time. Turns out that the process is pretty easy if you have an accurate enough timing device. So the first step is to make sure your computer's clock is set right. Keep in mind, one minute in Vanadiel is a VERY short time, so if your clock is off by a minute, you could be off by a Vanadiel hour. I recommend using some kind of Network Time Protocol client, such as the one that is included by default in XP (in the "Date and Time Properties" window, go to the "Internet Time" tab.)
Now that you have the right time, we can begin to work our way back to the current Vanadiel time. From observation and careful calibration, I discovered that there are EXACTLY 25 days per day, (Wow, deep observation isn't it?) The fact that this number doesn't equal the number of hours per day explains why a day is not quite an hour long. (Actually, it's 57.6 Minutes long.) This is convinient for players since it means that if you play the game for only an hour a day (the same hour more importantly,) over the period of a few weeks you'll eventually see every day in the month. People who want to get their RSE but can only play in a small window are sure to thank Square for this little insight, even though it does make figuring out when day changes occur substantially more difficault.
At this point I'd like to take an oppertunity to talk about the Vanadiel calendar. The calendar doesn't follow the same calendar we use here in the real world. Instead, all of the units of time are fixed. There are EXACTLY 60 minutes per hour, EXACTLY 24 hours per day, EXACTLY 8 (not,7) days per week, EXACTLY 30 days per month (No, there is no correlation between weeks and months), and EXACTLY 12 months per year. The days of the week are Fire, Earth, Water, Wind, Ice, Thunder, Light, and Dark.
The next thing you need to do is establish a reference time. This
means taking a time measurement in Vanadiel and on Earth at the same
moment. The more precise you are here, the better your time will be
when you're done. For me I chose the best time I could think of, the
"End of the Week" for the server, which happens to be at 9:00 AM MDT
for me. My reference pair is 09:00 9/8/2004 MDT = 00:00 2/11/952.
Once you have your reference pair, our 25 days to 1 day
relation becomes quite useful. What we do is render the Vanadiel time
into a number of minutes. This is done using our calendar
relationships. The function for finding this is ((((year)* years
* 12 months per year + month) * 30 days per month
+ day) * 24 hours per day + hour) * 60 minutes
per hour + minute. For 00:00 2/11/952 this works out to
be 493,994,880 minutes since epoch (00:00 1/1/0).
From this we then just create a ratio between some time standard we
have, such as the number of ticks (100 nano second periods) per minute
(Which is 2,400,000,000). This particular one is especially useful with
languages that use the IEEE 8 byte integer standard date format. We can
then solve for the current number of minutes since the epoch
by solving (Current Time - Reference Time) / 2400000000 + 493994880
using nothing but integer math.
Now we can quickly convert from this minute total to the Vanadiel time via a simple sequence of modulus, subtraction, and integer devision operations. I will use % to symbolize the modulus operator. If VDMinutes is the total number of minutes from epoch then the current Vanadiel time is calculated by the following algorithm:
<>minute = VDMinutes % 60VDHours = (VDMinutes - minute) / 60
hour = VDHours % 24
VDDays = (VDHours - hour) / 24
day = VDDays % 30
VDMonths = (VDDays - day) / 30
month = VDMonths % 12
year = (VDMonth - month) / 12
Realistically, it's not nessicary to use a different variable for VDMinutes, VDHours, VDDays, or VDMonths, since they're never used anywhere but immediately following their assignment, so replacing all of them with VDMinutes works just as well. But if you need to know the toal number of, say, days since the epoch, you can use their names as they stand and the value of them will represent the total number of integer (hours, days, months) since epoch.
TADA! You now have the current Vanadiel Time!
