【问题标题】:Convert date time to another format将日期时间转换为另一种格式
【发布时间】:2020-01-16 11:59:44
【问题描述】:

我正在尝试使用以下代码将日期时间转换为 2019 年 12 月 17 日 19:13:14:850 到 17/12/2019 19:13:

string dateTime = "17 Dec 2019 19:13:14:850";
DateTime dt = DateTime.ParseExact(dateTime,"dd:MM:yyyy hh:mm:ss:fff",CultureInfo.InvariantCulture);
string s = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

但收到错误消息为:

字符串未被识别为有效的日期时间。

【问题讨论】:

  • string s= dt.ToString(dd/MM/yyyy,CultureInfo.InvariantCulture ); 应该是 string s= dt.ToString("dd/MM/yyyy",CultureInfo.InvariantCulture ); 你缺少引号。
  • 请仔细检查您正在解析的值。日期部分之间的唯一分隔符是空格,而不是冒号。

标签: c# datetime-conversion


【解决方案1】:

你的初始字符串的格式实际上是: "dd MMM yyyy hh:mm:ss:fff"

MM 为您提供月份编号,而MMM 为您提供缩写月份名称。此外,由于您使用的是 ParseExact,因此您需要删除日期部分中的 :s,因为它们不存在于您的字符串中。

然后,如果您想将其发送到 17/12/2019 19:13,格式将是 "dd/MM/yyyy hh:mm" - 您的也没有被引用,但我认为这是原始帖子中的错字

编辑:正如其他回答者指出的那样,在这两种情况下,您都应该使用HH 而不是hh,因为时间格式是24 小时,所以:

"dd MMM yyyy HH:mm:ss:fff""dd/MM/yyyy HH:mm"

【讨论】:

    【解决方案2】:

    hh 在您解析 24 小时格式时导致问题。

    值应为dd MMM yyyy HH:mm:ss:fffdd/MM/yyyy HH:mm

    试试下面的

    string dateTime = "17 Dec 2019 19:13:14:850";
    DateTime dt = DateTime.ParseExact(dateTime, "dd MMM yyyy HH:mm:ss:fff", CultureInfo.InvariantCulture);
    string s = dt.ToString("dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 2017-08-27
      相关资源
      最近更新 更多