雅白

Programmer, Data Analyst and Gamer

github twitter rss
FFXIV 换算地球时间为艾欧泽亚时间
Mar 13, 2017
已阅读了一分钟

最终幻想 14 有三个时间,服务器时间(UTC)、艾欧泽亚时间和本地时间。

服务器时间没的说,就是 GMT+0 时间;本地时间是玩家当地时间,中国在 GMT+8 时区。而艾欧泽亚时间是游戏内日月交替的时间,流速比地球时间快,艾欧泽亚时间还涉及到了采集职业,掌握了艾欧泽亚时间对应的采集方向就可以针对性的高效采集。

艾欧泽亚时间流速比地球时间快,60 分钟的艾欧泽亚时间差不多等于不到 3 分钟的地球时间。观察一下均匀的时间变化可以看出似乎艾欧泽亚时间只是单纯的地球时间乘以某个常数的结果。

经过简单的几次试验推出艾欧泽亚时间基于 Unix(1970-01-01) 时间而非从 0001-01-01 开始的时间。

根据 http://ffxiv.gamerescape.com/wiki/Time 的说明

Eorzean Increments Components in Eorzean Units Conversion into Earth Time
1 minute 60 seconds 2 1112 seconds
1 bell 60 minutes 2 minutes, 55 seconds
1 sun 24 bells 70 minutes
1 week 8 suns 9 hours, 20 minutes
1 moon 32 suns 37 hours, 20 minutes
1 year 12 moons 18 days, 16 hours

1 Bell = 60 分钟 = 3600 秒,就可以换算出时间常数

3600/175≈20.57142857142857

结合 Google 到的轮子验证思路是正确的。

写了个 Golang 的转换库 https://github.com/violarulan/EorzeaTimeConvert

Example

package main
 
import (
    "fmt"
    "time"
    c "github.com/violarulan/EorzeaTimeConvert"
)
 
func main(){
    // Convert a time.Time to a EorzeaTime
    var ret = c.ConvertToEorzeaTime(time.Now())
    fmt.Println(ret)
    // {924 6 30 2 31 53}
 
    var str = c.ConvertToEorzeaTimeString(time.Now(), "%s-%s-%s %s:%s:%s")
    fmt.Println(str)
    // 924-06-30 08:01:22
}

回到文章列表


comments powered by Disqus