[英]How to format this string so that it can be recognized by Convert.ToDateTime?
[英]Format of Convert.ToDateTime(string) method
當我們執行Convert.ToDateTime('08/01/2014')
如何將其轉換為2014年8月1日(忽略格式)而不是2014年1月8日?
據我所知,沒有提及傳遞給此方法的字符串參數的任何格式。
如果value不為null ,則返回值是使用針對當前區域性初始化的DateTimeFormatInfo對象中的格式信息對value調用DateTime.Parse方法的結果。
首先,它是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不為null,則返回值是使用針對當前區域性初始化的DateTimeFormatInfo對象中的格式信息對value調用DateTime.Parse方法的結果。 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")
時,它將此字符串解析為1月2 日而不是2月1日的原因 。
@SonerGönül我的CurrentCulture是“ zh-cn”! – Salihdeen 3分鍾前
就像我說的那樣,您en-US
將MM/dd/yyyy
dd/MM/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"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.