【发布时间】:2021-05-11 16:25:46
【问题描述】:
我需要将日期和时间字符串转换为纪元时间戳。我得到了 11 小时的时差,(我认为这是 UTC 与本地时差)。
using System;
public class Program
{
public static void Main()
{
var output = StringDateToUnixString("08-02-2021 23:59:59", "dd-MM-yyyy HH:mm:ss");
Console.WriteLine($"Result : {output}");
Console.WriteLine("Expected: 1612789199000");
if(output == 1612789199000)
{
Console.WriteLine("Match");
}
else
{
Console.WriteLine("Not a match");
}
}
public static double StringDateToUnixString(string dateString, string currentFormat)
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime date = DateTime.ParseExact(dateString, currentFormat, System.Globalization.CultureInfo.InvariantCulture);
return Convert.ToInt64((date - epoch).TotalMilliseconds);
}
}
当我检查时,纪元和本地时间是 UTC,但是 (UTC-UTC).TotalMilliseconds,当转换回来时是本地时间。 我非常感谢我可以更新 StringDateToUnixString 函数,以便 Main 可以按预期工作。
【问题讨论】:
-
所以不要打电话给
ToLocalTime? -
还是不行。我会更新问题。
-
你为什么期待 1612789199000
-
因为当我转换它时,我得到“08-02-2021 23:59:59”。我添加了freeformatter.com/epoch-timestamp-to-date-converter.html 的截图
-
尝试其他网站
标签: c# datetime asp.net-core .net-core epoch