4

用户应该以以下格式输入日期:%m %d %Y

我需要做的是将日期转换为:(11 11 2013即今天的日期)。我在约会方面工作不多。有什么方法可以开箱即用地进行这种转换吗?我查看了 DateTime 选项,但找不到我需要的。

编辑:

从收到的答案看来,我在问什么并不是很清楚。

在我们的软件中,用户可以按如下格式插入日期:

http://ellislab.com/expressionengine/user-guide/templates/date_variable_formatting.html

我正在尝试解析此用户输入并返回今天的日期。所以从上面的链接:

%m - 月 - “01”到“12”</p>

%d - 月份中的第几天,2 位数字,前导零 - “01”到“31”</p>

%Y - 年,4 位数字 - “1999”</p>

我想知道是否有一种方法可以%m %d %Y作为输入并以指定格式(即11 11 2013今天)返回相应的今天日期。或者至少接近那个。希望现在更清楚了。

编辑2:

在深入挖掘之后,我发现我正在寻找的是 C# 中的 C++ strftime 的等价物。

http://www.cplusplus.com/reference/ctime/strftime/

但由于某种原因,我看不到用 C# 实现的示例。

4

3 回答 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);
}
于 2013-11-11T13:57:20.197 回答
2

使用ParseExact

var date = DateTime.ParseExact("9 1 2009", "M d yyyy", CultureInfo.InvariantCulture);
于 2013-11-11T13:57:06.803 回答
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);

不过,您的问题仍然很不清楚。

于 2013-11-11T13:55:01.443 回答