[英]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.TryParseExact
或DateTime.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.