簡體   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