Convert.ToDateTime(string)方法的格式
本文关键字:方法 格式 string ToDateTime Convert | 更新日期: 2023-09-27 18:18:33
执行Convert.ToDateTime('08/01/2014')
如何转换为2014年8月1日(忽略格式)而不是2014年1月8日?
据我所知,没有提到传递给此方法的字符串参数的任何格式。
没有提及?
如果value不是null,返回值是调用DateTime的结果。使用为当前区域性初始化的DateTimeFormatInfo对象中的格式化信息解析值的方法。
首先,它是Convert.ToDateTime("08/01/2014")
而不是Convert.ToDateTime('08/01/2014')
。字符串用双引号表示,而不是单引号。
Convert.ToDateTime(string)
方法默认使用CurrentCulture
作为IFormatProvider
。下面是它的实现过程;
public static DateTime ToDateTime(String value)
{
if (value == null)
return new DateTime(0);
return DateTime.Parse(value, CultureInfo.CurrentCulture);
}
和DateTime.Parse(string, IFormatProvider)
实现为;
public static DateTime Parse(String s, IFormatProvider provider)
{
return (DateTimeParse.Parse(s, DateTimeFormatInfo.GetInstance(provider), DateTimeStyles.None));
}
从文档;那么,如果value不为空,则返回值是调用方法的结果DateTime。中的格式信息解析值的方法为当前区域性初始化的DateTimeFormatInfo对象。 value参数必须包含日期和时间的表示形式在DateTimeFormatInfo主题中描述的格式之一。
DateTimeFormatInfo
主题到底是什么呢?这是DateTimeFormatInfo.GetAllDateTimePatterns
方法的DateTimeFormatInfo
的信息。
很可能您当前的线程区域性有MM/dd/yyyy
而不是dd/MM/yyyy
(或者哪个字符是CurrentCulture
的DateSeparator
,因为"/"
自定义格式说明符具有特殊含义,如取代当前区域性或指定的区域性日期分隔符)作为标准日期和时间格式。
您可以使用;
查看CurrentCulture
的所有标准日期和时间格式var patterns = CultureInfo.CurrentCulture.
DateTimeFormat.
GetAllDateTimePatterns();
foreach (var format in patterns)
{
Console.WriteLine(format);
}
让我给你一个例子;我目前的线程文化是土耳其(tr-TR
)。它有dd.MM.yyyy
作为标准日期和时间格式。
这就是为什么当我在代码中编写Convert.ToDateTime("02.01.2014")
时,它将此字符串解析为January 2nd而不是February 1st。
@SonerGönül我的当前文化是"en-US"!- Salihdeen 3分钟前
正如我所说,您的en-US
有MM/dd/yyyy
,但没有dd/MM/yyyy
作为标准日期和时间格式。这就是为什么您的08/01/2014
字符串解析为MM/dd/yyyy
模式而不是dd/MM/yyyy
。
var patterns = CultureInfo.GetCultureInfo("en-US").
DateTimeFormat.
GetAllDateTimePatterns();
foreach (var format in patterns)
{
Console.WriteLine(format);
}
结果将是;
M/d/yyyy
M/d/yy
MM/dd/yy
MM/dd/yyyy <-- HERE!
yy/MM/dd
yyyy-MM-dd
dd-MMM-yy
dddd, MMMM dd, yyyy
MMMM dd, yyyy
dddd, dd MMMM, yyyy
dd MMMM, yyyy
dddd, MMMM dd, yyyy h:mm tt
dddd, MMMM dd, yyyy hh:mm tt
dddd, MMMM dd, yyyy H:mm
dddd, MMMM dd, yyyy HH:mm
MMMM dd, yyyy h:mm tt
MMMM dd, yyyy hh:mm tt
MMMM dd, yyyy H:mm
MMMM dd, yyyy HH:mm
dddd, dd MMMM, yyyy h:mm tt
dddd, dd MMMM, yyyy hh:mm tt
dddd, dd MMMM, yyyy H:mm
dddd, dd MMMM, yyyy HH:mm
dd MMMM, yyyy h:mm tt
dd MMMM, yyyy hh:mm tt
dd MMMM, yyyy H:mm
dd MMMM, yyyy HH:mm
dddd, MMMM dd, yyyy h:mm:ss tt
dddd, MMMM dd, yyyy hh:mm:ss tt
dddd, MMMM dd, yyyy H:mm:ss
dddd, MMMM dd, yyyy HH:mm:ss
MMMM dd, yyyy h:mm:ss tt
MMMM dd, yyyy hh:mm:ss tt
MMMM dd, yyyy H:mm:ss
MMMM dd, yyyy HH:mm:ss
dddd, dd MMMM, yyyy h:mm:ss tt
dddd, dd MMMM, yyyy hh:mm:ss tt
dddd, dd MMMM, yyyy H:mm:ss
dddd, dd MMMM, yyyy HH:mm:ss
dd MMMM, yyyy h:mm:ss tt
dd MMMM, yyyy hh:mm:ss tt
dd MMMM, yyyy H:mm:ss
dd MMMM, yyyy HH:mm:ss
M/d/yyyy h:mm tt
M/d/yyyy hh:mm tt
M/d/yyyy H:mm
M/d/yyyy HH:mm
M/d/yy h:mm tt
M/d/yy hh:mm tt
M/d/yy H:mm
M/d/yy HH:mm
MM/dd/yy h:mm tt
MM/dd/yy hh:mm tt
MM/dd/yy H:mm
MM/dd/yy HH:mm
MM/dd/yyyy h:mm tt
MM/dd/yyyy hh:mm tt
MM/dd/yyyy H:mm
MM/dd/yyyy HH:mm
yy/MM/dd h:mm tt
yy/MM/dd hh:mm tt
yy/MM/dd H:mm
yy/MM/dd HH:mm
yyyy-MM-dd h:mm tt
yyyy-MM-dd hh:mm tt
yyyy-MM-dd H:mm
yyyy-MM-dd HH:mm
dd-MMM-yy h:mm tt
dd-MMM-yy hh:mm tt
dd-MMM-yy H:mm
dd-MMM-yy HH:mm
M/d/yyyy h:mm:ss tt
M/d/yyyy hh:mm:ss tt
M/d/yyyy H:mm:ss
M/d/yyyy HH:mm:ss
M/d/yy h:mm:ss tt
M/d/yy hh:mm:ss tt
M/d/yy H:mm:ss
M/d/yy HH:mm:ss
MM/dd/yy h:mm:ss tt
MM/dd/yy hh:mm:ss tt
MM/dd/yy H:mm:ss
MM/dd/yy HH:mm:ss
MM/dd/yyyy h:mm:ss tt
MM/dd/yyyy hh:mm:ss tt
MM/dd/yyyy H:mm:ss
MM/dd/yyyy HH:mm:ss
yy/MM/dd h:mm:ss tt
yy/MM/dd hh:mm:ss tt
yy/MM/dd H:mm:ss
yy/MM/dd HH:mm:ss
yyyy-MM-dd h:mm:ss tt
yyyy-MM-dd hh:mm:ss tt
yyyy-MM-dd H:mm:ss
yyyy-MM-dd HH:mm:ss
dd-MMM-yy h:mm:ss tt
dd-MMM-yy hh:mm:ss tt
dd-MMM-yy H:mm:ss
dd-MMM-yy HH:mm:ss
MMMM dd
MMMM dd
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
yyyy'-'MM'-'dd'T'HH':'mm':'ss
h:mm tt
hh:mm tt
H:mm
HH:mm
h:mm:ss tt
hh:mm:ss tt
H:mm:ss
HH:mm:ss
yyyy'-'MM'-'dd HH':'mm':'ss'Z'
dddd, MMMM dd, yyyy h:mm:ss tt
dddd, MMMM dd, yyyy hh:mm:ss tt
dddd, MMMM dd, yyyy H:mm:ss
dddd, MMMM dd, yyyy HH:mm:ss
MMMM dd, yyyy h:mm:ss tt
MMMM dd, yyyy hh:mm:ss tt
MMMM dd, yyyy H:mm:ss
MMMM dd, yyyy HH:mm:ss
dddd, dd MMMM, yyyy h:mm:ss tt
dddd, dd MMMM, yyyy hh:mm:ss tt
dddd, dd MMMM, yyyy H:mm:ss
dddd, dd MMMM, yyyy HH:mm:ss
dd MMMM, yyyy h:mm:ss tt
dd MMMM, yyyy hh:mm:ss tt
dd MMMM, yyyy H:mm:ss
dd MMMM, yyyy HH:mm:ss
MMMM, yyyy
MMMM, yyyy
用这个
DateTime.ParseExact(string datetime, string format, IFormatProvider provider)
,
DateTime.ParseExact("08-01-2014", "MM-dd-yyyy", new CultureInfo("en-US"))