2016-06-05 2 views
0

A를 Eorzea 날짜 시간 값을 변환 (모든 신용은 해결책을 그에게 간다) :지구 시간

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를 계속 제공합니다.

분명히 나는 ​​뭔가를 놓치고 있거나 어떤 점에서 잘못 알고있다.

진드기에 대한 나의 이해는 매우 제한적입니다.

도움이나 조언을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

입력 내용은 무엇이며 결과로 원하는 것은 무엇입니까? –

+0

안녕하십니까, Eorza 시간을 생성 한 다음이를 구문 분석하여 년 - 월 - 일을 얻은 다음 특정 시간을 추가하십시오. 예를 들어 07:00이라고 말하면 2016-06-06 03:01:00 기본 DateTime). –

답변

2

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

안녕하십니까, 도움과 코드를 많이 보내 주셔서 감사합니다. 제가 찾고있는 것이고 크게 감사하겠습니다. 내 주요 문제는 내가 틱 계산 (eorzeaTicks 대 earthTicks)에서 +를 +로 변경하지 않았다는 것입니다. 다시 한 번 감사드립니다! –

관련 문제