如何将 DateTime 转换为/从特定的字符串格式(两种方式,例如给定格式为“yyyyMMdd”)?

Posted

技术标签:

【中文标题】如何将 DateTime 转换为/从特定的字符串格式(两种方式,例如给定格式为“yyyyMMdd”)?【英文标题】:How to convert DateTime to/from specific string format (both ways, e.g. given Format is "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 格式。希望这能回答你的问题 你被困在什么地方了吗? 【参考方案1】:

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

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

【讨论】:

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

解析日期时间:

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

DateTime.Parse DateTime.ParseExact

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

DateTime.TryParse DateTime.TryParseExact

阅读更多关于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 更快!!!

以上是关于如何将 DateTime 转换为/从特定的字符串格式(两种方式,例如给定格式为“yyyyMMdd”)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 DateTime 转换为字符串 [重复]

使用 strtotime 从 jQueryUI datepicker 将字符串转换为 datetime

如何从 MySql 数据库中获取日期到 C# DateTime 对象?

如何将 DateTime 转换为本地化的小数秒字符串?

在Powershell中如何将日期'2017年6月6日,08:09:05.000'转换为[DateTime]?

琐事:如何将 JSON2.org DateTime 字符串转换为 C# DateTime