将DateTime
值写入文本文件时,我必须确保使用的时区始终为UTC +01:00。格式为yyyy-MM-ddTHH:mm:sszzz
,zzz
部分始终等于+01:00
。这意味着,如果DateTime值不是UTC +01:00,则需要在写入输出之前进行转换。
最好的方法是什么?
答案 0 :(得分:2)
使用
DateTime
值," zzz"自定义格式说明符表示本地操作系统与UTC的时区的签名偏移量,以小时和分钟为单位。它不反映实例的System.DateTime.Kind
属性的值。出于这个原因," zzz"建议不要将格式说明符与DateTime
值一起使用。
相反,要么使用DateTimeOffset
值(其中" zzz"执行您认为应该执行的操作),要么继续使用DateTime
值,请使用{{3} }。
例如,在我的电脑上(位于美国太平洋时区):
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz") // "2017-06-21T14:57:17-07:00"
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssK") // "2017-06-21T14:57:17Z"
DateTimeOffset.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz") // "2017-06-21T14:57:17+00:00"
K
说明符选择UTC类型,并在结果中正确显示Z
。zzz
说明符正确传达零点偏移。答案 1 :(得分:0)
使用:
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz")
将导致错误。 请尝试以下方法:
DateTime.**Now**.ToString("yyyy-MM-ddTHH:mm:sszzz")