我有一个字符串
Subject: Trip Ticket\r\nDate: Sun, 18 May 2014 0:59:56 -0400\r\nImportance:
Normal\r\nX-Mailer: Symposium Technologies Inc.
我想将Sun, 18 May 2014 0:59:56 -0400
之类的日期替换为27 May 14 16:28:00 UT
之类的日期。其中日期不是静态的,可以有任何日期。我使用索引来做,但我认为它不正确,因为0:59:56
将来可能是10:59:56,然后它会开始给出错误。任何人都可以知道如何准确地做到这一点。
答案 0 :(得分:3)
不确定。只需将问题分解成更小的部分:
:
上。DateTime
。DateTime
转换为所需的格式。但请注意,您的文字看起来像电子邮件,并且电子邮件中的Date:
标题必须具有此格式(请参阅{ {3}},第3.3节。
答案 1 :(得分:0)
使用它:
myDate.ToUniversalTime().ToString("r")
// It Displays : Thu, 09 Apr 2014 11:45:09 GMT
或者:
myDate.ToString("m", CultureInfo.CreateSpecificCulture("ms-MY"))
// Displays 09 April
答案 2 :(得分:0)
您可以使用String.Format()
var str = string.Format(
"Subject: Trip Ticket\r\nDate: {0}\r\nImportance: Normal\r\nX-Mailer: Symposium Technologies Inc.",
yourDate);
答案 3 :(得分:0)
日期似乎总是在一行的开头,此规则是否始终适用?
是的,这总是适用,它以行开头,以行结束
然后你可以替换这条线。例如:
string newDate = "27 May 14 16:28:00 UT";
string text = "Subject: Trip Ticket\r\nDate: Sun, 18 May 2014 0:59:56 -0400\r\nImportance: Normal\r\nX-Mailer: Symposium Technologies Inc.";
var newLines = text.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
.Select(l => new { Line = l, DateIndex = l.IndexOf("Date:", StringComparison.OrdinalIgnoreCase) })
.Select(x => x.DateIndex == -1 ? x.Line : x.Line.Substring(0, x.DateIndex)
+ string.Format("Date: {0}", newDate));
text = string.Join(Environment.NewLine, newLines);