将字符串格式转换为 mm/dd/yyyy 的日期时间格式

39

我需要将格式为mm/dd/yyyy的字符串转换为datetime变量,但其格式应保持为mm/dd/yyyy。

string strDate = DateTime.Now.ToString("MM/dd/yyyy");

请帮忙。


10
日期时间变量在内部没有格式。 - undefined
"但日期格式应该保持为 mm/dd/yyyy。" 如果您谈论的是字符串,可以使用 DateTime.ToShortDateString - Tim Schmelter
6个回答

48
你正在寻找 DateTime.Parse() 方法 (MSDN 文章),所以你可以这样做:
var dateTime = DateTime.Parse("01/01/2001");

这将为您提供一个DateTime类型的对象。

如果您需要指定使用哪种日期格式,您可以使用DateTime.ParseExact (MSDN文章)

在像这样使用英国风格日期格式的情况下,您可以这样使用:

string[] formats= { "dd/MM/yyyy" }
var dateTime = DateTime.ParseExact("01/01/2001", formats, new CultureInfo("en-US"), DateTimeStyles.None);

2
当您只需要考虑一个格式字符串时,无需使用formats数组;DateTime.ParseExact还有其他重载函数可供选择。 - Jeppe Stig Nielsen

35

月份部分需要大写的 M

string strDate = DateTime.Now.ToString("MM/dd/yyyy");

小写字母m用于输出(和解析)分钟(例如h:mm)。

例如,完整的日期时间字符串可能如下所示:

string strDate = DateTime.Now.ToString("MM/dd/yyyy h:mm");

注意大写/小写的 mM 差异。


如果您将始终处理相同的日期时间格式字符串,则可以通过编写 C# 扩展方法来使其更加简便。

public static class DateTimeMyFormatExtensions
{
  public static string ToMyFormatString(this DateTime dt)
  {
    return dt.ToString("MM/dd/yyyy");
  }
}

public static class StringMyDateTimeFormatExtension
{
  public static DateTime ParseMyFormatDateTime(this string s)
  {
    var culture = System.Globalization.CultureInfo.CurrentCulture;
    return DateTime.ParseExact(s, "MM/dd/yyyy", culture);
  }
}

例子: 在DateTime和字符串之间进行翻译

DateTime now = DateTime.Now;

string strNow = now.ToMyFormatString();
DateTime nowAgain = strNow.ParseMyFormatDateTime();

请注意,没有方法可以存储自定义的DateTime格式信息以用作默认格式。在.NET中,大多数字符串格式取决于当前设置的区域性。

System.Globalization.CultureInfo.CurrentCulture.

你能够采用的唯一简单方法是编写一个自定义扩展方法。

此外,另一个简单的方法是使用不同的“容器”或“包装”类来处理你的DateTime,即某个特殊类别,其中定义了显式运算符(explicit operator),可以自动将DateTime / string进行转换。但这是危险的领域。


我已经完成了这个任务,现在我想将其存储为日期时间变量。 - Aviral Kumar
@aviral 请查看 https://gist.github.com/2319253 以获取示例。但在使用之前,请尽量理解所有部分。 - chakrit

4

解决方案

DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)

2
您可以通过以下方式更改格式:
string fecha = DateTime.Now.ToString(format:"dd-MM-yyyy");

// 这将 "/" 更改为 "-"


2
我这样做了。
var datetoEnter= DateTime.ParseExact(createdDate, "dd/mm/yyyy", CultureInfo.InvariantCulture);

3
你的格式是错误的,应该是"dd/MM/yyyy",大小写会有所不同。否则你会把分钟加入到日期中。 - Pogrindis

1
以下对我有效。
string strToday = DateTime.Today.ToString("MM/dd/yyyy");

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