【问题标题】:Convert Date Formatting Codes to date将日期格式代码转换为日期
【发布时间】:2013-11-11 13:52:40
【问题描述】:

用户应该输入日期格式:%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# 实现的示例。

【问题讨论】:

  • 百分号是什么意思?
  • 我对你在这里追求什么感到有点困惑。您在解析他们的日期时遇到问题吗?你的输出有问题吗?输入和输出日期看起来像是(或可能是)相同的格式。还是要转换为dd MM yyyy 格式? 11 月 11 日并不是一个很好的日期来展示所需的日期格式......
  • 你的问题还是有点不清楚。您只想以动态确定的格式输出 TODAY 的日期吗?
  • 给我们一些输入/输出的伪代码。这将对解决您的问题有很大帮助;只是真的不清楚你想要什么。
  • String.Format() 看起来确实是您最好的选择。我现在看到编辑 2,看来这仍然是您的最佳答案。

标签: c# date date-formatting


【解决方案1】:

您可以使用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】:

    我对日期时间输入和输出的首选:

    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);
    

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

    【讨论】:

    • 在我发布之后才意识到这一点。添加了一些解释;只是发布一个链接对我不利。具体看解析链接!这真的应该是你所需要的。
    • 这不仅仅是一个链接的答案。这是一个类似的答案:如果你以前真的用谷歌搜索过,你会找到这个的。我发现这对新手学习谷歌很有用。
    • @statue:我认为关键是您根本不应该说“查看解析链接”,因为所有必要的信息都应该在您的答案中。链接应该是附加信息(例如如何使用其他日期格式)或只是来源参考。
    • @nabuchodonossor:这也不是答案。答案应包含回答问题所需的信息,而不是查找该信息的方法。链接不好的原因是如果网站死掉、被重组等等,那么答案就变得毫无用处了。
    【解决方案3】:

    使用ParseExact:

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

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 2023-03-30
      • 2011-08-13
      • 2016-12-02
      • 1970-01-01
      • 2012-06-05
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多