【问题标题】:How to convert DateTime to/from specific string format (both ways, e.g. given Format is "yyyyMMdd")?如何将 DateTime 转换为/从特定的字符串格式(两种方式,例如给定格式为“yyyyMMdd”)?
【发布时间】:2010-08-13 14:21:24
【问题描述】:

我在转换字符串格式的日期时间时遇到问题,但我无法使用"yyyyMMdd" 格式进行转换。

我的代码是:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;

【问题讨论】:

  • 现在的日期时间字符串是什么格式的?
  • 您的代码 sn-p 与问题的相关性是什么?
  • 我有点不清楚;您是在使用日期的字符串表示形式还是 DateTime 对象?假设它是一个 DateTime 对象,您可以调用 obj.ToString("yyyyMMdd");
  • 实际上 TPOCDate2 已经是一个变量,我只想将 tpoc2[0] 中的元素转换为 yyyyMMdd 格式。希望这能回答你的问题
  • 你被困在什么地方了吗?

标签: c# string datetime


【解决方案1】:

如果您在格式为“ddMMyyyy”的字符串中有一个日期,并且想要将其转换为“yyyyMMdd”,您可以这样做:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

【讨论】:

  • 卡住了你的代码,这个运行良好 DateTime.TryParse(stringValue, out outputInDateTime);
【解决方案2】:

解析日期时间:

要解析 DateTime,请使用以下方法之一:

或者,您可以使用try-parse 模式:

阅读更多关于Custom Date and Time Format Strings的信息。

将 DateTime 转换为字符串:

要以“yyyyMMdd”格式将日期时间返回为字符串,您可以使用ToString 方法。

  • 代码 sn-p 示例:string date = DateTime.ToString("yyyyMMdd");
  • 请注意,大写 M 表示月份,小写 m 表示分钟。

你的情况:

在您的情况下,假设您不想处理日期格式不同或丢失的情况,使用ParseExact 最方便:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

【讨论】:

  • 这是一个老话题,但对于那些搜索,上面的链接,“文化特定格式”现在是一个死链接。这是最新且内容丰富的Custom Date and Time Format Strings
【解决方案3】:

您可以像这样将字符串转换为 DateTime 值:

DateTime date = DateTime.Parse(something);

您可以将DateTime 值转换为格式化字符串,如下所示:

date.ToString("yyyyMMdd");

【讨论】:

    【解决方案4】:

    字符串到 yyyy-MM-dd 日期格式: 示例:

    TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
    

    【讨论】:

      【解决方案5】:

      如果您想将 DATE 作为字符串与 TIME 以及。我们可以这样做:

          //Date and Time is taking as current system Date-Time    
          DateTime.Now.ToString("yyyyMMdd-HHmmss");
      

      【讨论】:

      • 分钟应该是小“m”!? “yyyyMMdd-HHmmss”
      【解决方案6】:

      如果您想匹配特定的日期格式,请使用 DateTime.TryParseExact()

         string format = "yyyyMMdd"; 
          DateTime dateTime;
          DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                                   DateTimeStyles.None, out dateTime);
      

      【讨论】:

        【解决方案7】:

        您可以使用DateTime.TryParse() 代替DateTime.Parse()
        使用TryParse(),如果成功,您将有一个返回值;使用Parse(),您必须处理异常

        【讨论】:

          【解决方案8】:

          只要这样就行了。

          string yourFormat = DateTime.Now.ToString("yyyyMMdd");
          

          编码愉快:)

          【讨论】:

            【解决方案9】:

            不是 yyyy/mm/dd 的字符串,我需要 yyyyMMdd 格式的字符串

            如果您只需要从字符串中删除斜杠,您不只是替换它们吗?

            例子:

            myDateString = "2013/03/28";
            myDateString = myDateString.Replace("/", "");
            

            myDateString 现在应该是“20130328”。

            少一些矫枉过正:)

            【讨论】:

              【解决方案10】:

              这是转换为格式的简单方法

               DateTime.Now.ToString("yyyyMMdd");
              

              【讨论】:

                【解决方案11】:

                根据属性名称,您似乎正在尝试通过赋值将字符串转换为日期:

                claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
                

                这可能是由于当前的 UI 文化,因此在分配时无法正确解释日期字符串。

                【讨论】:

                • 不是 yyyy/mm/dd 的字符串,我需要 yyyyMMdd 格式的字符串
                • 并且在做claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString("yyyyMMdd");它给出了一些构建错误。 'string.ToString(System.IFormatProvider)' 的最佳重载方法匹配有一些无效的争论
                • @Matt - 真的吗?您编辑了一个 4 年以上的回复,甚至没有标记为添加标签的答案?这是一个严重的强迫症,你已经到了那里。
                【解决方案12】:

                来自 C# 6:

                var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";
                

                结果将是:“2019-01-15T11:46:33.2752667Z”

                【讨论】:

                  【解决方案13】:

                  我在搜索此答案时也遇到了一种更简单的方法;

                  string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
                  

                  【讨论】:

                  • 我有一个DateTime 的值怎么样?喜欢DateTime newDate = DateTime.Parse(Session["date"].ToString());
                  【解决方案14】:

                  你可以试试这些代码

                  claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 
                  

                  或者

                  claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 
                  

                  【讨论】:

                  • 看在上帝的份上(我们的救世主 Harambe),永远不要使用 Convert.ToDateTime... 这东西太慢了(~100ms)!只需使用 ParseExact 或 TryParse - waaaaay 更快!!!
                  猜你喜欢
                  • 2011-03-12
                  • 2021-08-26
                  • 2018-01-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多