不久前,我发布了以下内容,这是 olitee 很高兴地回答(所有功劳都归功于他的解决方案):
Convert DateTime value to Final Fantasy XIV Eorzea Game Time我试图在我的代码中添加功能,并且需要能够将 Eorzea 时间(FFXIV)放回地球时间以进行警报。
以下代码由 olitee 提供,将地球时间转换为 Eorzea 时间很好:
public static class EorzeaDateTimeExtention
{
public static DateTime ToEorzeaTime(this DateTime date)
{
const double EORZEA_MULTIPLIER = 3600D/175D;
long epochTicks = date.ToUniversalTime().Ticks - (new DateTime(1970, 1, 1).Ticks);
long eorzeaTicks = (long)Math.Round(epochTicks * EORZEA_MULTIPLIER);
return new DateTime(eorzeaTicks);
}
}
我试图恢复数学计算,但显然它一直给我负面的 epochTicks,每当我尝试转换时都会导致错误。
显然我错过了一些东西,或者我在某个时候错了。
我对蜱虫的理解相当有限。
任何帮助和 / 或提示将不胜感激。
提前非常感谢。
ToEarthTime
方法应该给你地球时间。
class Program
{
static void Main(string[] args)
{
var now = DateTime.Now;
var ff = now.ToEorzeaTime();
Console.WriteLine($"Now: {now} | FF: {ff}");
var ffNew = new DateTime(ff.Ticks, DateTimeKind.Utc);
var nowNew = ffNew.ToEarthTime();
Console.WriteLine($"Now: {nowNew} | FF: {ffNew}");
Console.ReadLine();
}
}
public static class Converter
{
private const double EORZEA_MULTIPLIER = 3600D / 175D;
public static DateTime ToEorzeaTime(this DateTime date)
{
long epochTicks = date.ToUniversalTime().Ticks - (new DateTime(1970, 1, 1).Ticks);
long eorzeaTicks = (long)Math.Round(epochTicks * EORZEA_MULTIPLIER);
return new DateTime(eorzeaTicks);
}
public static DateTime ToEarthTime(this DateTime date)
{
var epochTicks = (long) Math.Round(date.Ticks/EORZEA_MULTIPLIER);
var earthTicks = epochTicks + new DateTime(1970, 1, 1).Ticks;
var utc = new DateTime(earthTicks, DateTimeKind.Utc);
return utc.ToLocalTime();
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(1条)