【问题标题】:How can I convert a date string from format X to format Y?如何将日期字符串从 X 格式转换为 Y 格式?
【发布时间】:2015-05-18 05:18:29
【问题描述】:

我有一个包含某种格式 X 的日期的字符串(例如12/31/2015)。如何将其转换为 Y 格式(例如 2015-12-31 00:00:00)?

【问题讨论】:

  • 注意:这是一个规范的问题,对于所有 我如何将我的日期从格式...转换为格式...? 问题。随意添加更好的答案或改进我的答案。
  • 似乎已经有一个合适的“规范”问题。请解释为什么需要创建一个全新的问题,而不是简单地清理(如果有必要)另一个问题。
  • @PeterDuniho:我没有找到合适的现有规范问题,这就是我创建一个新问题的原因。您链接到的问题仅是关于解析到 System.DateTime (后来已被编辑,因此答案不再适合该问题)。我的想法是创建一个新的、“干净”的答案,而不是编辑答案(这会使问题与以前的问题相去甚远)。
  • 好吧,如果你不喜欢那个,这里有另一个候选人:stackoverflow.com/questions/7674355/…。用户是否有某种机制可以找到我不知道的“规范”问题?我怀疑这个问题最终不会比其他许多问题更容易找到,这些问题已经充分解释了如何在stringDateTime 之间来回转换。 :(

标签: c# datetime


【解决方案1】:

一个基于Heinzi推荐方法的简单函数:

public string ConvertDateFormat(string input, string inputFormat, string outputFormat)
{       
       return DateTime.ParseExact(input, inputFormat, CultureInfo.InvariantCulture)
                      .ToString(outputFormat,CultureInfo.InvariantCulture);
}

工作示例:https://dotnetfiddle.net/gQ11qs

【讨论】:

    【解决方案2】:

    C# 有它自己的DateTime structure。目标是

    1. 将您的字符串转换为DateTime,然后
    2. 将您的DateTime 转换回字符串。

    首先,您需要获取格式 X 和 Y 的 格式字符串。检查以下两个列表:

    例如,对于 12/31/2015,所有 dMM/dd/yyyy(使用 en-US 或不变文化)或 MM\/dd\/yyyy(使用任何语言环境)都可以。对于2015-12-31 00:00:00,它将是yyyy-MM-dd HH:mm:ss


    对于第一步,你可以使用DateTime.ParseExact(或者DateTime.TryParseExact,如果你想在字符串没有正确格式的情况下优雅地失败),例如,

    var myDateTime = DateTime.ParseExact(myInputString, "MM/dd/yyyy",
                                         CultureInfo.InvariantCulture);
    

    第二步,使用DateTime.ToString:

    var myOutputString = myDateTime.ToString("yyyy-MM-dd HH:mm:ss",
                                             CultureInfo.InvariantCulture);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2016-06-12
      • 2018-08-30
      • 1970-01-01
      • 2013-12-28
      相关资源
      最近更新 更多