Nic*_*dko 0 c# datetime datetime-format
我有一个示例日期/时间字符串,我需要转换为datetimeoffset.
存在一个巨大的不一致 - 如果该月的日期<10,则月和日之间存在双倍空间,否则只有一个空格.
例如:'Tue Dec 4 22:39:38 UTC 2018'和'Tue Dec 14 22:39:38 UTC 2018'
我目前正在解析它使用DateTimeOffset.ParseExact(dateTime, "ddd MMM dd HH:mm:ss UTC yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)哪个日期<10的日期失败并出现错误:
FormatException: String 'Tue Dec 4 22:52:42 UTC 2018' was not recognized as a valid DateTime.
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用单个空格搜索和替换双空格字符,但使用格式字符串是否有更优雅的方法来实现这一点?
这个问题似乎有一些评论(包括我自己的错误使用AllowLeadingWhite(我的意思AllowInnerWhite).
但是,仅使用AllowInnerWhite现有格式字符串仍会产生错误:
Console.WriteLine(DateTimeOffset.ParseExact("Tue Dec 4 22:39:38 UTC 2018", "ddd MMM dd HH:mm:ss UTC yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AllowInnerWhite));
Run Code Online (Sandbox Code Playgroud)
生产:
FormatException:String未被识别为有效的DateTime.
但是,从不同的角度来看,为什么不更改日期格式本身以允许单位数日期.使用"ddd MMM d HH:mm:ss UTC yyyy"(实际日期使用单个"d"代替"dd"):
Console.WriteLine(DateTimeOffset.ParseExact("Tue Dec 4 22:39:38 UTC 2018", "ddd MMM d HH:mm:ss UTC yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AllowInnerWhite));
Console.WriteLine(DateTimeOffset.ParseExact("Tue Dec 11 22:39:38 UTC 2018", "ddd MMM d HH:mm:ss UTC yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AllowInnerWhite));
Console.WriteLine(DateTimeOffset.ParseExact("Fri Dec 14 22:39:38 UTC 2018", "ddd MMM d HH:mm:ss UTC yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AllowInnerWhite));
Run Code Online (Sandbox Code Playgroud)
请注意,您的示例数据'Tue Dec 14 22:39:38 UTC 2018'将失败,因为2018年12月14日是星期五,而不是星期二.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |