我需要将格式为mm/dd/yyyy的字符串转换为datetime变量,但其格式应保持为mm/dd/yyyy。
string strDate = DateTime.Now.ToString("MM/dd/yyyy");
请帮忙。
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);
formats
数组;DateTime.ParseExact
还有其他重载函数可供选择。 - Jeppe Stig Nielsen月份部分需要大写的 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进行转换。但这是危险的领域。
解决方案
DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
string fecha = DateTime.Now.ToString(format:"dd-MM-yyyy");
// 这将 "/"
更改为 "-"
var datetoEnter= DateTime.ParseExact(createdDate, "dd/mm/yyyy", CultureInfo.InvariantCulture);
string strToday = DateTime.Today.ToString("MM/dd/yyyy");
DateTime.ToShortDateString
。 - Tim Schmelter