将日期格式代码转换为日期

4
用户需要按照格式输入日期:%m %d %Y 我的任务是将日期转换为:11 11 2013(即今天的日期)。我没有太多处理日期的经验。有没有一些现成的方法可以做到这种转换?我查看了DateTime选项,但没有找到我需要的东西。
编辑:
从收到的答案来看,似乎不太清楚我在问什么。
在我们的软件中,用户可以使用如下格式插入日期:http://ellislab.com/expressionengine/user-guide/templates/date_variable_formatting.html 我正在尝试解析这个用户输入并返回今天的日期。所以来自上面链接的内容:
%m - 月份 - “01”到“12”
%d - 当月的日期,带前导零的2位数字 - “01”到“31”
%Y - 年,4位数字 - “1999”
我想知道是否有一种方法,以%m %d %Y为输入,并以指定格式(即今天的日期11 11 2013)返回相应的今天日期。或者至少接近那样。 现在应该更清楚了。
编辑2:
经过进一步的调查,我发现我正在寻找的是C#中等效于C++ strftime的方法。 http://www.cplusplus.com/reference/ctime/strftime/ 但出于某种原因,我无法看到这在C#中的实现示例。

百分号代表什么意思? - Tim Schmelter
1
我有点不明白你想要什么。你在解析他们的日期方面遇到了麻烦吗?还是你无法输出自己的日期?输入和输出日期看起来是相同格式(或可能是)。或者你想要转换成“dd MM yyyy”格式?11月11日不是展示所需日期格式的好日期... - Chris
你的问题还有点不清楚。你只是想以动态确定的格式输出今天的日期吗? - Stachu
请给我们一些伪代码,说明输入/输出的内容。这将有助于解决您的问题;因为现在您想要什么还不是很清楚。 - Stachu
String.Format() 看起来确实是你最好的选择。我现在看到编辑2了,但仍然觉得这是你最好的答案。 - Stachu
Mdb,你找到解决方法了吗?我也正好遇到同样的问题! - MCS
3个回答

4
你可以使用 DateTime.TryParseExact 将字符串解析为日期,使用 DateTime.ToString 将其转换回所需格式的字符串:
DateTime parsedDate;
if (DateTime.TryParseExact("11 11 2013", "MM dd yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out parsedDate))
{ 
    // parsed successfully, parsedDate is initialized
    string result = parsedDate.ToString("MM dd yyyy", System.Globalization.CultureInfo.InvariantCulture);
    Console.Write(result);
}

2

我的DateTime输入和输出首选:

http://www.dotnetperls.com/datetime-parse 用于输入(解析)

http://www.csharp-examples.net/string-format-datetime/ 用于输出(格式化)

string dateString = "01 01 1992";
string format = "MM dd yyyy";

DateTime dateTime = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);

根据他的编辑,我的上面的回答已经不再相关了(但是为了参考仍然保留):

从你所说的,你想以动态定义的格式输出今天的日期?

所以如果我想看到月份、日期和年份,我会说“MM dd YY”,然后你会把它返回给我吗?

如果是这样的话:

DateTime dt = DateTime.Today; // or initialize it as before, with the parsing (but just a regular DateTime dt = DateTime.Parse() or something quite similar)

然后。
String formatString = "MM dd YY";
String.Format("{0:"+ formatString+"}", dt);

你的问题仍然不太清楚。

3
只返回翻译文本:仅包含链接的答案并不是很有用。 - svick
@statue:我认为重点是你根本不应该说“看解析链接”,因为所有必要的信息都应该在你的答案中。链接应该是额外的信息(例如如何在其他日期格式上执行),或者只是源引用。 - Chris
完全有道理。我认为最好提供链接和解决方案!;) 我的答案和其他人的结合应该会产生这种效果。 - Stachu
@statue:确实。我希望其他人能够提供更多页面链接(尽管我更喜欢MSDN文档)。通过添加相关的代码片段或其他内容来编辑您的答案,使其独立存在,这样您的答案将变得更好(并且可能会失去负评)。 - Chris
我会将这种格式映射到C#等效格式。例如,'%b' 转换为 'MMM'。然后进行字符串格式化。你的答案接近我要做的事情,所以我会接受它。谢谢。 - Mdb
显示剩余4条评论

2
使用ParseExact
var date = DateTime.ParseExact("9 1 2009", "M d yyyy", CultureInfo.InvariantCulture);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接