118 lines
4.0 KiB
C#
118 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace XRServer
|
|
{
|
|
public class DateTimeUtil
|
|
{
|
|
//헝가리 서버에서 NQTT 시간이 UTC 시간으로 전송되서 Greenwich Standard Time 로 변경
|
|
private static TimeZoneInfo hungaryInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
|
|
private static TimeZoneInfo koreadInfo = TimeZoneInfo.FindSystemTimeZoneById("Korea Standard Time");//korea
|
|
|
|
/// <summary>
|
|
/// 헝가리 시간
|
|
/// </summary>
|
|
public static DateTime HungaryNow { get => TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, hungaryInfo); }
|
|
|
|
public static string HungaryNowString { get => FormatTime(HungaryNow); }
|
|
|
|
public static DateTime UtcNow { get => DateTime.UtcNow; }
|
|
public static string UtcNowString { get => FormatTime(UtcNow); }
|
|
|
|
|
|
private static TimeSpan utcHungaryGap = TimeSpan.Zero;
|
|
|
|
/// <summary>
|
|
/// hungary - utc 시간 차이
|
|
/// </summary>
|
|
public static TimeSpan UtcHungaryGap { get => (utcHungaryGap == TimeSpan.Zero) ? ToHungaryDateTime(DateTime.UtcNow) - DateTime.UtcNow : utcHungaryGap; }
|
|
|
|
/// <summary>
|
|
/// UTC string을 UTC DateTime으로 변환. yyyy-MM-ddTHH:mm:ss.fffZ 포맷이라 제대로 변환 됨
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <returns></returns>
|
|
public static DateTime UtcParse(string s) { return DateTime.Parse(s).ToUniversalTime(); }
|
|
|
|
/// <summary>
|
|
/// string을 DateTime으로 변환
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <param name="format"></param>
|
|
/// <returns></returns>
|
|
public static DateTime Parse(string s, string format) { return DateTime.ParseExact(s, format, CultureInfo.InvariantCulture); }
|
|
|
|
|
|
/// <summary>
|
|
/// UTC DateTime을 헝가리 DateTime으로 변환
|
|
/// </summary>
|
|
/// <param name="utcDateTime"></param>
|
|
/// <returns></returns>
|
|
public static DateTime ToHungaryDateTime(DateTime utcDateTime)
|
|
{
|
|
return TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, hungaryInfo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// UTC string을 헝가리 DateTime으로 변환
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <returns></returns>
|
|
public static DateTime UtcStringToHungaryDateTime(string s)
|
|
{
|
|
return ToHungaryDateTime(UtcParse(s));
|
|
}
|
|
|
|
/// <summary>
|
|
/// UTC string을 헝가리 Time String으로 변환
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <returns></returns>
|
|
public static string UtcStringToHungaryTimeString(string s)
|
|
{
|
|
return FormatTime(UtcStringToHungaryDateTime(s));
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// UTC DateTime을 한국 DateTime으로 변환
|
|
/// </summary>
|
|
/// <param name="utcDateTime"></param>
|
|
/// <returns></returns>
|
|
public static DateTime ToKoreaDateTime(DateTime utcDateTime)
|
|
{
|
|
return TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, koreadInfo);
|
|
}
|
|
|
|
/// <summary>
|
|
/// UTC string을 한국 DateTime으로 변환
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <returns></returns>
|
|
public static DateTime UtcStringToKoreaDateTime(string s)
|
|
{
|
|
return ToKoreaDateTime(UtcParse(s));
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// UTC string을 한국 Time String으로 변환
|
|
/// </summary>
|
|
/// <param name="s"></param>
|
|
/// <returns></returns>
|
|
public static string UtcStringToKoreaTimeString(string s)
|
|
{
|
|
return FormatTime(UtcStringToKoreaDateTime(s));
|
|
}
|
|
|
|
public static string FormatTime(DateTime dateTime)
|
|
{
|
|
return dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
|
|
}
|
|
}
|
|
}
|