将以毫秒为单位的时间转换为本地日期字符串
Convert a time in milliseconds to local date string
我正在尝试将以毫秒为单位的时间戳转换为本地日期时间。但这很奇怪。
日期增加1天。我不知道我听起来有多愚蠢,但我真的很高兴有人对此有所了解。
代码:
public static DateTime ConvertToLocalDate(string timeInMilliseconds){
double timeInTicks = double.Parse(timeInMilliseconds);
TimeSpan dateTimeSpan = TimeSpan.FromMilliseconds(timeInTicks);
DateTime dateAfterEpoch = new DateTime(1970, 1, 1) + dateTimeSpan;
DateTime dateInLocalTimeFormat = dateAfterEpoch.ToLocalTime();
return dateInLocalTimeFormat;
}
例如,如果我通过:
1579631400000
相当于:2020-01-21T18:30:00
它 returns: 1/22/2020 12:00:00 AM
怎么了?
由于您的 ConvertToLocalDate 函数 returns 日期和时间为您当地的时区。您需要将其转换为 UTC 以获得预期的日期和时间。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ConvertToLocalDate("1579631400000").ToUniversalTime());
Console.ReadKey();
}
public static DateTime ConvertToLocalDate(string timeInMilliseconds)
{
double timeInTicks = double.Parse(timeInMilliseconds);
TimeSpan dateTimeSpan = TimeSpan.FromMilliseconds(timeInTicks);
DateTime dateAfterEpoch = new DateTime(1970, 1, 1) + dateTimeSpan;
DateTime dateInLocalTimeFormat = dateAfterEpoch.ToLocalTime();
return dateInLocalTimeFormat;
}
}
或者根本不要在 ConvertToLocalDate
中使用 ToLocalTime()(如果是这种情况,您的函数不应命名为 ConvertToLocalDate)
不要使用 ToLocalTime()。休息会很好
我正在尝试将以毫秒为单位的时间戳转换为本地日期时间。但这很奇怪。
日期增加1天。我不知道我听起来有多愚蠢,但我真的很高兴有人对此有所了解。
代码:
public static DateTime ConvertToLocalDate(string timeInMilliseconds){
double timeInTicks = double.Parse(timeInMilliseconds);
TimeSpan dateTimeSpan = TimeSpan.FromMilliseconds(timeInTicks);
DateTime dateAfterEpoch = new DateTime(1970, 1, 1) + dateTimeSpan;
DateTime dateInLocalTimeFormat = dateAfterEpoch.ToLocalTime();
return dateInLocalTimeFormat;
}
例如,如果我通过:
1579631400000
相当于:2020-01-21T18:30:00
它 returns: 1/22/2020 12:00:00 AM
怎么了?
由于您的 ConvertToLocalDate 函数 returns 日期和时间为您当地的时区。您需要将其转换为 UTC 以获得预期的日期和时间。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ConvertToLocalDate("1579631400000").ToUniversalTime());
Console.ReadKey();
}
public static DateTime ConvertToLocalDate(string timeInMilliseconds)
{
double timeInTicks = double.Parse(timeInMilliseconds);
TimeSpan dateTimeSpan = TimeSpan.FromMilliseconds(timeInTicks);
DateTime dateAfterEpoch = new DateTime(1970, 1, 1) + dateTimeSpan;
DateTime dateInLocalTimeFormat = dateAfterEpoch.ToLocalTime();
return dateInLocalTimeFormat;
}
}
或者根本不要在 ConvertToLocalDate
中使用 ToLocalTime()(如果是这种情况,您的函数不应命名为 ConvertToLocalDate)
不要使用 ToLocalTime()。休息会很好