![](/img/trans.png)
[英]Trying to convert string format (dd-mm-yyyy hh:mm:ss) in (yyyy-mm-dd hh:mm:ss) date format
[英]C# Convert a string "yyyy-MM-dd hh:mm:ss 'UTC'" to date time
我有一个字符串,例如: "2022-04-17 14:46:31 UTC"
我想将其转换为日期时间,但出现以下错误:
字符串 '2022-04-17 14:46:31 UTC' 未被识别为有效的 DateTime。从索引 '20' 开始有一个未知单词。”
请注意,我已经尝试过:
var date = DateTime.Parse("2022-04-17 14:46:31 UTC");
和
DateTime dt;
DateTime.TryParseExact("2022-04-17 14:46:31 UTC",
"yyyy-MM-dd hh:mm:ss 'UTC'",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)
有两件事要做:
HH
用于 24 小时格式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);
根据这个答案,您需要将时区名称转换为时移。
因此,首先我们需要将时区名称表获取到时区偏移。 我从这里复制并转换为字典。
完整的算法是:
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"},
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.