使用文化信息将unix时间转换为特定的日期时间格式

时间:2015-04-26 09:17:46

标签: c# string datetime converter

我尝试将字符串转换为特定的日期时间格式。

我有字符串:

1431075600

我尝试将其转换为:

private static IFormatProvider culture = new System.Globalization.CultureInfo("en-GB");
model.DeliveryDate = DateTime.Parse(data.DeliveryDate, culture, System.Globalization.DateTimeStyles.AssumeLocal);

我收到错误消息:

String was not recognized as a valid DateTime.

最后我希望日期时间格式为

Friday, 8 May 2015 hour: 09:00

1 个答案:

答案 0 :(得分:3)

您的字符串看起来像Unix Time,自1 January 1970 00:00 UTC.起经过一秒钟。这就是为什么,你不能直接解析它到DateTime。您需要先创建一个unix时间,然后将该值添加为秒。

这就是为什么你需要将你的字符串作为第二个添加到这个值,如;

var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dt = dt.AddSeconds(1431075600).ToLocalTime();

然后您可以使用基于英语的文化行InvariantCulture格式化字符串;

Console.WriteLine(dt.ToString("dddd, d MMM yyyy 'h'our: HH:mm",
                              CultureInfo.InvariantCulture));

结果将是;

Friday, 8 May 2015 hour: 09:00

这里有 demonstration