我需要将日期(以毫秒为单位)转换为用户可读日期,我无法做到。
我的日期是:1494519599999,相当于:2017年5月11日星期四18:19:59 GMT + 0200
我需要得到像dd / mm / yyyy HH:mm:ss
这样的东西我已尝试过在其他stackoverflow帖子中阅读的内容:
DateTime date = new DateTime(long.Parse(ticks));
date.ToString("yyyy-MM-ddThh:mm:ssZ");
但是我总是每年,每月都会得到0。我认为我应该乘以或除以1000,但这是最差的。
这样做的正确方法是什么?
答案 0 :(得分:1)
时间戳似乎是JavaScript中常用于表示日期的值(自1970年1月1日以来经过的毫秒数)。您可以使用以下代码将其转换为DateTimeOffset
:
var timestamp = 1494519599999;
var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
var dateTimeOffset = epoch.AddMilliseconds(timestamp);
结果为05/11/2017 16:19:59 +00:00
。
我使用的是DateTimeOffset
,可让您更轻松地将偏移量从+0000
更改为+0200
。您可以使用此代码更改偏移量,我假设您要转换为本地日期和时间。 Windows Phone 8不支持TimeZoneInfo
类的完整功能,因此如果您需要转换为另一个时区,则需要创建代码,明确更改偏移量:
dateTimeOffset = dateTimeOffset.ToLocalTime();
现在结果为05/11/2017 18:19:59 +02:00
。
如果您希望使用DateTime
代替DateTimeOffset
,则可以使用此代码创建UTC DateTime
:
var timestamp = 1494519599999;
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var dateTime = epoch.AddMilliseconds(timestamp);
结果为05/11/2017 16:19:59
,如果您的本地时区偏移量为+0200,则可以将其转换为本地DateTime
以获得所需的结果。但是,如果涉及时区,我建议您使用DateTimeOffset
。
答案 1 :(得分:0)
试试这个:
var time = TimeSpan.FromMilliseconds(milliseconds);