将字符串转换为DateTime(yyyy-mm-dd)

时间:2016-06-16 11:36:58

标签: c# datetime

我正在从服务器解析日期,日期采用这种格式6/16/2016 3:15:29 PM您能否帮助我将日期转换为2016-06-16

我试过了:

DateTime date = DateTime.ParseExact(datestring, "MM/dd/yyyy h-m-s t", System.Globalization.CultureInfo.InvariantCulture);
string formattedDate = date.ToString("yyyy-MM-dd")

但它给了我错误。

2 个答案:

答案 0 :(得分:5)

你有3个问题

  • 您没有使用正确的时间分隔符
  • 当您需要两个
  • 时,您只使用一个t
  • 当您只需要一个
  • 时,您正在使用两个M

尝试

DateTime date = DateTime.ParseExact(datestring, "M/d/yyyy h:m:s tt", System.Globalization.CultureInfo.InvariantCulture);
string formattedDate = date.ToString("yyyy-MM-dd");

您只需要一个M的原因是因为MM需要前导零。由于日期和时间的值是分隔的,因此将单个版本用于月,日,分和秒会更好,因为它们适用于带或不带前导零的值。

答案 1 :(得分:0)

要执行输入字符串的DateTime.ParseExact()格式,格式字符串必须相同。试试这个:

DateTime date = DateTime.ParseExact(datestring, "M/dd/yyyy h:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
string formattedDate = date.ToString("yyyy-MM-dd");

这些在给定的输入字符串中很有意思6/16/2016 3:15:29 PM):

  1. 月份以个位数表示,因此M代替MM。如果指定为MM,我们会使用06
  2. 同样是小时数。对于普通h
  3. ,它应该是hh
  4. 日期和时间以及时间和PM之间只有一个空格。 因此,我们必须在为ParseExact
  5. 生成格式字符串时考虑所有这些因素