繁体   English   中英

如何在“ yyyyMMddThhmmss.000GMT”中退出GMT?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM