我有一個字串,例如: “2022-04-17 14:46:31 UTC”
我想將其轉換為日期時間,但出現以下錯誤: {“字串'2022-04-17 14:46:31 UTC'未被識別為有效的日期時間。從索引開始有一個未知單詞'20'。”}
請注意,我已經嘗試過:
var date = DateTime.Parse("2022-04-17 14:46:31 UTC")
2.DateTime dt; DateTime.TryParseExact("2022-04-17 14:46:31 UTC", "yyyy-MM-dd hh:mm:ss 'UTC'", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)
uj5u.com熱心網友回復:
有兩件事要做:
- 如評論中所述:
HH用于 24 小時格式 - 將結果調整為實際的 UTC 時間
DateTime.TryParseExact("2022-04-17 14:46:31 UTC", "yyyy-MM-dd HH:mm:ss 'UTC'", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
DateTime utc = new DateTime(dt.Ticks, DateTimeKind.Utc);
uj5u.com熱心網友回復:
根據這個答案,您需要將時區名稱轉換為時移。
因此,首先我們需要將時區名稱表獲取到時區偏移。我從這里復制并轉換為字典。
完整的演算法是:
- 查找時區名稱
- 在字典中找到它
- 用班次替換時區名稱
- 決議日期字串
var dateString = "2022-04-17 14:46:31 UTC";
var lastWhiteSpace = dateString.LastIndexOf(' ');
var timeZoneName = dateString.Substring(lastWhiteSpace 1);
var correctDate = dateString.Replace(timeZoneName, TimeZoneToShift[timeZoneName]);
var date = DateTime.ParseExact(correctDate, "yyyy-MM-dd HH:mm:ss zzz", null);
public static Dictionary<string, string> TimeZoneToShift = new Dictionary<string, string>()
{
{"ACDT", "-10:30"},
{"ACST", "-09:30"},
{"ADT", " 03:00"},
{"AEDT", "-11:00"},
{"AEST", "-10:00"},
{"AHDT", " 09:00"},
{"AHST", " 10:00"},
{"AST", " 04:00"},
{"AT", " 02:00"},
{"AWDT", "-09:00"},
{"AWST", "-08:00"},
{"BAT", "-03:00"},
{"BDST", "-02:00"},
{"BET", " 11:00"},
{"BST", " 03:00"},
{"BT", "-03:00"},
{"BZT2", " 03:00"},
{"CADT", "-10:30"},
{"CAST", "-09:30"},
{"CAT", " 10:00"},
{"CCT", "-08:00"},
{"CDT", " 05:00"},
{"CED", "-02:00"},
{"CET", "-01:00"},
{"CST", " 06:00"},
{"EAST", "-10:00"},
{"EDT", " 04:00"},
{"EED", "-03:00"},
{"EET", "-02:00"},
{"EEST", "-03:00"},
{"EST", " 05:00"},
{"FST", "-02:00"},
{"FWT", "-01:00"},
{"GMT", " 00:00"},
{"GST", "-10:00"},
{"HDT", " 09:00"},
{"HST", " 10:00"},
{"IDLE", "-12:00"},
{"IDLW", " 12:00"},
{"IST", "-05:30"},
{"IT", "-03:30"},
{"JST", "-09:00"},
{"JT", "-07:00"},
{"MDT", " 06:00"},
{"MED", "-02:00"},
{"MET", "-01:00"},
{"MEST", "-02:00"},
{"MEWT", "-01:00"},
{"MST", " 07:00"},
{"MT", "-08:00"},
{"NDT", " 02:30"},
{"NFT", " 03:30"},
{"NT", " 11:00"},
{"NST", "-06:30"},
{"NZ", "-11:00"},
{"NZST", "-12:00"},
{"NZDT", "-13:00"},
{"NZT", "-12:00"},
{"PDT", " 07:00"},
{"PST", " 08:00"},
{"ROK", "-09:00"},
{"SAD", "-10:00"},
{"SAST", "-09:00"},
{"SAT", "-09:00"},
{"SDT", "-10:00"},
{"SST", "-02:00"},
{"SWT", "-01:00"},
{"USZ3", "-04:00"},
{"USZ4", "-05:00"},
{"USZ5", "-06:00"},
{"USZ6", "-07:00"},
{"UT", " 00:00"},
{"UTC", " 00:00"},
{"UZ10", "-11:00"},
{"WAT", " 01:00"},
{"WET", " 00:00"},
{"WST", "-08:00"},
{"YDT", " 08:00"},
{"YST", " 09:00"},
{"ZP4", "-04:00"},
{"ZP5", "-05:00"},
{"ZP6", "-06:00"},
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/493631.html
