繁体   English   中英

Excel datetime与C#DateTime的偏移量

[英]Excel datetime with offset to C# DateTime

我有一张Excel工作表,上面有我使用一些JavaScript或VBA退出的日期(没关系)。

然后,我得到一个看起来像这样的日期: "Tue Feb 4 00:00:00 UTC+0100 2014"

是否有任何内置版本可将其转换为C#DateTime? 如您所见,我不使用时间部分,因此也不在乎UTC偏移量。

是否有任何内置版本可将其转换为C#DateTime?

当然! 您可以使用DateTime.TryParseExactDateTime.ParseExact方法来解析您的字符串。

string s = "Tue Feb 4 00:00:00 UTC+0100 2014";
DateTime dt;
if(DateTime.TryParseExact(s, "ddd MMM d HH:mm:ss 'UTC+0100' yyyy", 
                          CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
}

但是,当字符串具有偏移值时,请不要使用这种方式。

在“ 自定义日期和时间格式字符串”页面中; 如果您的字符串具有带符号的偏移量,则建议使用DateTimeOffset而不是DateTime

使用DateTime值, “ zzz”自定义格式说明符表示本地操作系统时区相对UTC的带符号偏移,以小时和分钟为单位。 它不反映实例的DateTime.Kind属性的值。 因此,不建议将“ zzz”格式说明符与DateTime值一起使用。

使用DateTimeOffset值,此格式说明符以小时和分钟为单位表示DateTimeOffset值与UTC的偏移量。

string s = "Tue Feb 4 00:00:00 UTC+0100 2014";
DateTimeOffset dto;
if(DateTimeOffset.TryParseExact(s, "ddd MMM d HH:mm:ss 'UTC'zzz yyyy", 
                                CultureInfo.InvariantCulture,
                                DateTimeStyles.None, out dto))
{
    Console.WriteLine(dto);
}

然后,您可以将此DateTimeOffset 转换DateTime 因为DateTime不存储任何偏移值。 没有这样的事情; DateTime ,偏移量为1小时”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM