考虑以下代码:
TimeStamp.Text = BlogComment.Date.UtcNow.ToString("yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
BlogComment.Date
是DateTime
对象,其日期已设置。 TimeStamp
只是一个文字。
我一直无法识别转义序列。我该如何解决这个问题?
答案 0 :(得分:3)
你想要一个字符串文字 - 用@作为字符串前缀不会像你在字符串中那样解析转义序列的字符串,而是以“文字”形式接受它。
@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz"
修改:
DateTime上也没有UtNow
属性 - 这是一个仅在DateTime类上可用的静态属性。你可以写:
TimeStamp.Text = BlogComment.Date.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
或者您打算将时间转换为UTC:
TimeStamp.Text = BlogComment.Date
.ToUniversalTime()
.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
答案 1 :(得分:2)
编辑:
TimeStamp.Text = BlogComment.Date.ToUniversalTime().ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
答案 2 :(得分:1)
试试这个:
Stamp.Text = BlogComment.Date.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz");
或者
Stamp.Text = BlogComment.Date.ToString(@“yyyy-MM-ddTHH:mm:ss.fffffffzzz”);
我的错误:确实需要\
,因为它可能是自定义格式说明符。
如果您只想要当前时间,请使用
Stamp.Text = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
UtcNow是静态的。不应该从实例访问它。它应该从类本身访问。
或者,您可能需要:
Stamp.Text = BlogComment.Date.ToUniversalTime().ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");
这将为您提供BlogComment中日期的通用时间。
答案 3 :(得分:0)
在处理DateTime格式字符串中的转义字符时,有一个类似的问题@Oppositional's writes
使用自定义格式字符串时 一个DateTime,重要的是要记住 你需要逃避你的 使用单引号的分隔符。
string time = DateTime.UtcNow.ToString(
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz",
DateTimeFormatInfo.InvariantInfo);
单引号'
包围的字符是DateTime格式字符串中的文字字符串。
但是,如果您还指定了不变文化,则转义-
和:
是多余的。在格式化日期和时间时,您应始终指定文化。
同样重要的是要注意/
和:
是DateTime格式字符串中的(不变)日期和时间分隔符。 DateTime.ToString将根据需要使用当前文化来转换它们。例如,意大利语(it-IT
)将.
作为其时间分隔符。同样,fr-CH
的日期分隔符为.
如果您查看System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.UniversalSortableDateTimePattern
yyyy'-'MM'-'dd HH':'mm':'ss'Z'
答案 4 :(得分:0)
DateTime.UtcNow..ToString(" O&#34);
(o)往返(当地): 。 。 。 2006-04-17T14:22:48.2698750-07:00
(o)往返(UTC): 。 。 。 。 2006-04-17T21:22:48.2698750Z
(o)往返(未指定): 2000-03-20T13:02:03.0000000
http://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.85).aspx