|
@@ -0,0 +1,60 @@
|
|
|
+using System;
|
|
|
+using System.Globalization;
|
|
|
+
|
|
|
+namespace GFGGame
|
|
|
+{
|
|
|
+ public class LauncherTimeUtil
|
|
|
+ {
|
|
|
+ private static DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
|
+
|
|
|
+ private static readonly string[] Formats =
|
|
|
+ {
|
|
|
+ "HH:mm",
|
|
|
+ "'['yyyy']['M']['dd']'",
|
|
|
+ "'['yyyy']['MM']['d']'",
|
|
|
+ "'['yyyy']['M']['d']'",
|
|
|
+ "'['yyyy']['MM']['dd']'",
|
|
|
+ "'['yyyy']['MM']['dd']['HH:mm']'",
|
|
|
+ "'['yyyy']['MM']['dd']['H:mm']'",
|
|
|
+ "'['yyyy']['M']['dd']['HH:mm']'",
|
|
|
+ "'['yyyy']['M']['dd']['H:mm']'",
|
|
|
+ "'['yyyy']['MM']['d']['HH:mm']'",
|
|
|
+ "'['yyyy']['MM']['d']['H:mm']'",
|
|
|
+ "'['yyyy']['M']['d']['HH:mm']'",
|
|
|
+ "'['yyyy']['M']['d']['H:mm']'",
|
|
|
+ "'['yyyy']['MM']['dd']['HH:mm:ss']'",
|
|
|
+ "'['yyyy']['M']['dd']['HH:mm:ss']'",
|
|
|
+ "'['yyyy']['MM']['d']['HH:mm:ss']'",
|
|
|
+ "'['yyyy']['M']['d']['HH:mm:ss']'",
|
|
|
+ };
|
|
|
+
|
|
|
+ private static DateTime GetDateTime(string timeStr)
|
|
|
+ {
|
|
|
+ if (DateTime.TryParseExact(timeStr, Formats, null, DateTimeStyles.None, out var result))
|
|
|
+ {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ throw new FormatException("Invalid date format");
|
|
|
+ }
|
|
|
+
|
|
|
+ //转换成时间戳,单位毫秒
|
|
|
+ public static long GetTimestamp(string timeStr)
|
|
|
+ {
|
|
|
+ var dateTime = GetDateTime(timeStr);
|
|
|
+ return Transition(dateTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前时间的时间戳,单位毫秒
|
|
|
+ public static long GetCurrentTimestamp()
|
|
|
+ {
|
|
|
+ DateTime now = DateTime.UtcNow;
|
|
|
+ return Transition(now);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static long Transition(DateTime d)
|
|
|
+ {
|
|
|
+ return (d.Ticks - dt.Ticks) / 10000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|