如何从网络服务转换此日期时间格式。日期时间值为:"时间戳":" 2014-04-18T14:45:00 + 02:00" 我想把它转换成:dd.mm.YYYY hh.mm.ss
答案 0 :(得分:4)
您需要使用InvariantCulture
格式"yyyy-MM-dd'T'HH:mm:ssK"
使用DateTime.ParseExact
方法;
string s = "2014-04-18T14:45:00+02:00";
var date = DateTime.ParseExact(s, "yyyy-MM-dd'T'HH:mm:ssK",
CultureInfo.InvariantCulture);
查看The "K"
Custom Format Specifier
然后,您可以使用DateTime.ToString()
方法获取DateTime
的字符串表示形式。 DateTime
没有固有的格式,只有一个值。您可以获取格式的字符串表示。
date.ToString("dd.MM.yyyy HH.mm.ss", CultureInfo.InvariantCulture);
//18.04.2014 03.45.00
这里有 demonstration
。
请记住,mm
是几分钟,MM
是几个月。 hh
用于 12小时制,即01
到12
。但HH
24小时制,00
到23
。
这就是为什么你不能用14
说明符解析hh
的原因。我假设您的真实表示格式为dd.MM.yyyy HH.mm.ss
编辑:在comment之后,您可以使用"MM/dd/yyyy HH:mm:ss"
格式;
string s = "04/18/2014 14:45:00";
var date = DateTime.ParseExact(s, "MM/dd/yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
Console.WriteLine(date); // 18/04/2014 14:45:00
答案 1 :(得分:0)
使用DateTime.ParseExact(string, string, IFormatProvider)
或DateTime.TryParseExact(string, string, IFormatProvider, DateTimeStyles, out DateTime
)。
答案 2 :(得分:0)
使用正则表达式,您可以执行以下操作:
string resultString = null;
try {
resultString = Regex.Replace(subjectString, @"(\d{4})-(\d{2})-(\d{2})\w{1}(\d{2}):(\d{2}):(\d{2})\+\d{2}:\d{2}", "$3.$2.$1 $4.$5.$6", RegexOptions.IgnoreCase);
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
// 18.04.2014 14.45.00
答案 3 :(得分:0)
string date = "2014-04-18T14:45:00+02:00";
var results = DateTime.ParseExact(s, "yyyy-MM-dd'T'HH:mm:ssK", CultureInfo.InvariantCulture);