[英]How to escape the GMT in “yyyyMMddThhmmss.000GMT”?
我正在使用JsonConverter
属性设置datetime
格式,但是对于字符串"yyyyMMddThhmmss.000GMT"
"19900321T20000.000G3T"
由于"19900321T20000.000G3T"
M,我得到的日期类似于"19900321T20000.000G3T"
。如何在格式字符串中转义这些字符?
您可以使用:
"yyyyMMdd'T'HHmmss'.000GMT'"
我将hh
更改为HH
因为大多数(理智的)人都使用24小时制。
在文档“自定义日期和时间格式字符串”上显示,可以将诸如'string'
中的后缀字符用作文字字符串定界符 。 现在,为了清楚起见,即使在DateTime格式字符串中没有大写T
,我也将T
放在此分隔符内。
使用单引号进行转义,例如:
"yyyyMMddThhmmss'.000GMT'"
喜欢:
string str = "19900321T20000.000GMT";
DateTime dt = DateTime.ParseExact(str,"yyyyMMddTHHmms'.000GMT'", CultureInfo.InvariantCulture);
将hh
更改为HH
24小时,并且您的秒似乎是一位数字值,因此请使用s
。
(我假设您的问题原始字符串中具有GMT
,而不是G3T
)
您有2个选项可以将...GMT
部分用作自定义日期和格式字符串中的字符串文字定界符:
".000GMT"
'.000GMT'
但是我建议使用单引号,因为如果使用双引号,则需要使用\\
来对引号进行转义(因为转义序列 ),或者可以使用逐字字符串literal 。
对字符串的T
中间也执行相同的操作。
还可以使用HH
符这是24小时制和使用s
speficier而不是ss
,因为你有5
你的后位T
,这就是为什么它不接受HHmmss
格式。
之所以得到G3T
,是因为M
具有自定义字符串格式月份的含义,这就是为什么GMT
解析为G3T
的原因。
string s = "19900321T20000.000G3T";
var dt = DateTime.ParseExact(s, "yyyyMMdd'T'HHmms'.000G3T'",
CultureInfo.InvariantCulture);
双引号;
string s = "19900321T20000.000G3T";
var dt = DateTime.ParseExact(s, "yyyyMMdd\"T\"HHmms\".000G3T\"",
CultureInfo.InvariantCulture);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.