【发布时间】:2011-06-09 20:20:00
【问题描述】:
所以我必须将 (MM-dd-yyyy) 格式的日期转换为 (dd-MMM-yyyy)。我最终做的是这个......
string strProvisionalDate = "04-22-2001";
string strFormat = "MM-dd-yyyy";
DateTime dtProvisional;
DateTime.TryParseExact(strProvisionalDate, strFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dtProvisional);
string strProvisionalDateConverted = dtProvisional.ToString("dd-MMM-yyyy");
string strFormatConverted = "dd-MMM-yyyy";
DateTime dtProvisionalConverted;
DateTime.TryParseExact(strProvisionalDateConverted, strFormatConverted, CultureInfo.InvariantCulture, DateTimeStyles.None, out dtProvisionalConverted);
基本上,我将其转换为 DateTime,将其转换为我想要的格式的字符串,然后将其转换回 DateTime。它有效,但我很想问是否有更好的方法来做到这一点......它似乎不是很优雅。
edit:事实证明,在这个 dtProvisional 和 dtProvisionalConverted 最终是相同的。所以我的新问题是,如何将 MM-dd-YYYY 格式的字符串转换为 dd-MMM-yyyy 格式的 DateTime? dtProvisional 将进入 SQL 数据库,它必须是日期格式。
【问题讨论】:
-
哦,废话,你是对的。所以这是我的后续问题...我需要 dtProvisional 的格式为“dd-MMM-yyyy”,我该怎么做?
-
我不明白你为什么要进行最后一次 TryParseExact 调用......你已经有了那个 DateTime 对象,为什么要把它变成一个字符串,然后又回到 DateTime 对象?
-
SQL Server 中字段的数据库类型是什么? SQL Server 以类似的方式存储日期,并且相当容忍传递格式良好的日期字符串值。
-
数据库类型为日期。客户想要 dd-MMM-yyyy 格式的所有日期。如果我向 SQL Server 传递一个字符串,例如“12-Feb-1999”,它会接受它作为日期吗?
-
我相信,如果 SQL Server 数据类型是 Date,那么传递它的格式并不重要,客户端的格式只会在实际使用数据的任何应用程序中很重要,因为在最后,SQL Server 不存储日期格式,但是(即使在查询中)当你想改变标准格式时,你可以控制日期格式(我不知道 SQL Server 是否有可配置的标准格式与否)。
标签: c# string datetime formatting