【发布时间】:2018-08-26 18:41:17
【问题描述】:
我正在尝试将此日期:Sunday 26 August 2018 18:30:00 转换为 GMT +2,因此结果应为:Today, 26 Aug 2018, 20:30。
现在下面的代码可以工作了:
var unixTimeStampValue = Convert.ToInt64(1535308200);
var unixTimeStamp = unixTimeStampValue.Split("-")[0].Replace("t", "");
unixTimeStamp = Regex.Match(unixTimeStamp, @"\d+").Value;
DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dtDateTime = dtDateTime.AddSeconds(Convert.ToInt64(unixTimeStamp));
TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
var date = TimeZoneInfo.ConvertTimeFromUtc(dtDateTime, timeInfo);
但问题是,如果我在 linux 上运行它,我会得到:
System.IO.FileNotFoundException:在本地计算机上找不到时区 ID“中欧标准时间”--> System.IO.FileNotFoundException:找不到文件“/usr/share/zoneinfo/中欧标准时间”时间”。
这个问题只出现在linux上,我该如何解决?还有其他方法可以实现这种转换吗?
【问题讨论】:
-
@DaisyShipton 感谢您的回复,您能举一个 NodaTime 的例子吗?我没用过