[英]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 AM
和01/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.