Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串到MM/dd/yyyy_C#_C# 4.0 - Fatal编程技术网

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的回答是什么?如果你一开始就显示出所需的输出,这会有所帮助。