C# 字符串到MM/dd/yyyy
我有这样一个字符串:C# 字符串到MM/dd/yyyy,c#,c#-4.0,C#,C# 4.0,我有这样一个字符串: DateTime publicationDate = DateTime.ParseExact(myDate, "MM/dd/yyyy", CultureInfo.InvariantCulture); string publicationDate = DateTime.ParseExact(myDate, "M/d/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); 2013年3月4日或类似于201
DateTime publicationDate = DateTime.ParseExact(myDate, "MM/dd/yyyy", CultureInfo.InvariantCulture);
string publicationDate = DateTime.ParseExact(myDate, "M/d/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy");
2013年3月4日或类似于2012年10月11日。这是mm/dd/yyyy格式,我想将其转换为mm/dd/yyy。我是这样做的:
DateTime publicationDate = DateTime.ParseExact(myDate, "MM/dd/yyyy", CultureInfo.InvariantCulture);
string publicationDate = DateTime.ParseExact(myDate, "M/d/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy");
这给我带来了一个错误:
String was not recognized as a valid DateTime.
这是怎么回事
编辑:
在回顾了所有答案之后,我想显示DateTime变量的月份和日期
所以我不能这样做:
DateTime publicationDate = DateTime.ParseExact(myDate, "MM/dd/yyyy", CultureInfo.InvariantCulture);
string publicationDate = DateTime.ParseExact(myDate, "M/d/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy");
拥有一个字符串并不能解决我的问题,因为我使用这个变量只显示日期和月份。
当我尝试将此“publicationDate”解析回DateTime时,它会从月份和日期截断“0”
希望我在这里表达了我的观点
答复:
首先将字符串转换为DateTime。确保有前导零
string date = "03/04/2013";
DateTime dt = Convert.ToDateTime(date);
您应该在月份和日期中添加前导零 这边:2013年3月4日
var myDateTime = DateTime.ParseExact(
"03/04/2013",
"MM/dd/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
如果前导零有问题,请执行以下操作:
var myDateTime = DateTime.ParseExact(
"3/4/2013",
"M/d/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
最后,如果要添加前导零:
string myFormattedDateTime = DateTime.ParseExact(
"3/4/2013",
"M/d/yyyy",
System.Globalization.CultureInfo.InvariantCulture)
.ToString("MM/dd/yyyy");
两个测试用例都通过了
如果您的格式要求MM/dd/yyyy,则您需要提供字符串,例如2013年3月4日,而不是2013年3月4日。所以
如果您提供的日期没有前导零,请使用M/d/yyyy
如果可以提供前导零,则使用MM/dd/yyyy
改为使用此模式:M/d/yyyy解析它,MM/dd/yyyy解析ToString:
正如您在这里看到的那样,这两种方法都有效:简单的解决方案是:
string publicationDate = DateTime.ParseExact(myDate, "M/d/yyyy", CultureInfo.InvariantCulture).ToString("MM/dd");
谢谢大家的回答 我没有控制权,日期来自数据库。@Laurent 2013年11月4日怎么样?没错!我的数据可能在2013年2月3日或2014年11月10日。@lazyberezovsky:没问题,2013年11月4日。ParseExact的表现非常好。@Laurent对不起,我的错,第1条不是我的问题。我的问题是2013年3月4日至年月日。我怎么做?我更新了我的答案:你应该在ParseExact中使用M/d/yyyy。看看这个链接。它具有日期时间的所有自定义字符串。d和dd与M和MM不同。这是在MM/dd/yyyy中。不是,要知道小写字母“m”代表分钟。我再次编辑了我的答案:只需将.toString gmm/dd/yyyy应用于ParseExact的结果,您将获得预期的格式化日期。这是给我的:2/3/2012。我想要的是:02/03/2013。@RG-3:编辑了我的答案,第一个问题是如何正确解析,第二个问题是如何用两个数字显示。请查看我编辑的问题。我需要一个DateTime变量,而不是字符串。@RG-3:还不清楚,DateTime变量没有格式。如果只想显示日和月,请使用其日或月属性,或使用ToString/MM@RG-3:那么对stringMM/dd的回答是什么?如果你一开始就显示出所需的输出,这会有所帮助。