簡體   English   中英

如何將字符串轉換為 DateTime as UTC 就這么簡單

[英]how to convert string to DateTime as UTC as simple as that

假設我有這個字符串:如何將它轉換為具有 UTC 時間的 DateTimeOffset object - 意味着 -00:00 作為時區 - 即使我在特定時區的機器上運行它?

假設字符串:“2012-10-08T04:50:12.0000000”

Convert.ToDateTime("2012-10-08T04:50:12.0000000" + "Z");

--> DateTime d = {10/8/2012 6:50:12 AM} 我希望它是DateTime d = {10/8/2012 4:50:12 AM}好像它會理解我想要日期就這么簡單(順便說一句——我的機器在時區+02:00)

使用DateTimeOffset.Parse(string).UtcDateTime

接受的答案對我不起作用。 使用DateTimeOffset.Parse(string)DateTimeOffset.ParseExact(string).UtcDateTime轉換器正確地將DateTime的類型更改為 UTC,但也轉換了時間。

要獲得與原始字符串時間相同但在 UTC 中的DateTime ,請使用以下命令:

DateTime dt = DateTime.ParseExact(string, "yyyy-MM-ddTHH:mm:ss.fffffff",
    CultureInfo.InvariantCulture);
dt = DateTime.SpecifyKind(dt, DateTimeKind.Utc);

我通過檢查DateTimeKind來做到這一點。 在我的函數中,將有 2 種不同類型的日期時間。 我想要的是從下面的函數將 UTC 時間轉換為本地時間。 輸入參數date總是以 UTC 形式出現。

例如輸入: 2021-01-19 07:43:00 AM01/07/2021 02:16:00 PM +00:00

public static DateTime GetDateTime(string date)
    {
        try
        {
            DateTime parsedDate = DateTime.Parse(date, GetCulture()); //invarient culture

            if (parsedDate.Kind == DateTimeKind.Unspecified)
            {
                parsedDate = DateTime.SpecifyKind(parsedDate, DateTimeKind.Utc);
            }
            
            return parsedDate.ToLocalTime();
        }
        catch (Exception e)
        {
            throw;
        }
    }
var universalDateTime = DateTime.Parse(your_date_time_string).ToUniversalTime();

使用DateTimeStyles.AssumeUniversal DateTime.Parse(...)中的 DateTimeStyles.AssumeUniversal 將完成這項工作,

前任:

DateTime.Parse("2023-01-02 9:26", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)

那么解析的日期時間將采用 UTC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM