在C#中转换DateTime格式

时间:2014-04-18 14:03:54

标签: c# datetime

如何从网络服务转换此日期时间格式。日期时间值为:"时间戳":" 2014-04-18T14:45:00 + 02:00" 我想把它转换成:dd.mm.YYYY hh.mm.ss

4 个答案:

答案 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小时制,即0112。但HH 24小时制0023

这就是为什么你不能用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);