I have to process dates . If the format i specify is mm/dd/yyyy and the date is like 7/5/2013, it is throwing a format exception. Does the date has to be like 07/05/2013? If yes how can i change the date from 7/5/2013 to 07/05/2013 programatically ? and the date format is not specific. I can have dates in mm-dd-yyyy or yyyy-mm-dd and the dates can come like 7-5-2013.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Use the ParseExact
method, and specify the format as M/d/yyyy
(or d/M/yyyy
, depending on what exactly you need):
var date = DateTime.ParseExact(input, "M/d/yyyy");
There is also an overload which can handle multiple date formats:
var date = DateTime.ParseExact(input,
new[] { "M/d/yyyy", "M-d-yyyy" },
CultureInfo.InvariantCulture,
DateTimeStyles.None);
This might still throw a FormatException
if the input is in not in one of the allowed formats. To handle this a bit more safely, take a look at the TryParseExact
method:
DateTime date;
var success = DateTime.TryParseExact(
input,
new[] { "M/d/yyyy", "M-d-yyyy" },
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date);
Don't forget to specify the correct format / and invariant culture when you're converting the date back to a string:
var output = date.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);