[英]Does the C# Convert.ToDateTIme function read date as “dd/mm/yyyy” or “mm/dd/yyyy”?
[英]Convert various date formats to MM/dd/yyyy in C#
我正在為Windows Phone開發一個應用程序。 由於世界各地使用的日期格式不同,在Windows Phone中,日期選擇器將印度用戶的日期顯示為dd-MM-yyyy ,而美國用戶的日期顯示為MM / dd / yyyy 。 所以我的應用程序崩潰了,因為它設置為僅對特定模塊使用MM / dd / yyyy格式。
由於我無法找到解決方案,您可以幫我一些代碼片段嗎?
編輯:我的嘗試
DateTime dt = DateTime.ParseExact(x.msDate.ToString(),"M/d/yyyy",System.Globalization.CultureInfo.InvariantCulture);
使用運行代碼的機器的當前區域性:
MyDateTime.ToString(CultureInfo.CurrentCulture)
或運行UI代碼的計算機的當前區域性:
MyDateTime.ToString(CultureInfo.CurrentUICulture)
或傳遞特定的文化:
MyDateTime.ToString(new CultureInfo("en-US"))
您的示例指定了不變的區域性,因此它將采用默認的DateTime字符串格式。 http://msdn.microsoft.com/zh-CN/library/8kb3ddd4(v=vs.110).aspx
如果您可以通過UTC傳遞DateTime的輸入,那也將使您的生活更加輕松。
像您一樣解析字符串日期很危險。 您應該使用需要年,月和日的DateTime構造函數,這樣您才會安全
DateTime date1 = new DateTime(2010, 8, 18);
要么
因此,您可以使用TryParseExact http://msdn.microsoft.com/zh-cn/library/system.datetime.tryparseexact(v=vs.110).aspx
從您的注釋中可以看出,x.msDate是存儲在數據庫中的字符串。 如果可以為不同的區域性設置此字符串的格式,並且在解析時需要一點靈活性,則可以使用TryParse方法。 有一個將IFormatProvider作為輸入的重載。 如果要解析的DateTime格式不同於當前區域性的格式,則可以創建CultureInfo並在解析DateTime時使用其DateTimeFormat屬性:
DateTime dt;
if (!DateTime.TryParse(stringValue, out dt)
{
if (!DateTime.TryParse(stringValue, new CultureInfo("en-US").DateTimeFormat, DateTimeStyles.None, out dt)
throw new ArgumentException("Unable to parse date");
}
// If you reach this line, you were able to parse the DateTime.
您也可以創建文化列表,並嘗試使用各種文化設置來解析字符串。 字符串成功解析后,您將返回值:
public DateTime ParseString(string value)
{
CultureInfo[] cultures = {CultureInfo.CurrentCulture,
new CultureInfo("en-US"),
new CultureInfo("de-DE")};
foreach(var cult in cultures)
{
DateTime dt;
if (DateTime.TryParse(value, cult, DateTimeStyles.None, out dt))
return dt;
}
throw new ArgumentException(
string.Format("Unable to parse DateTime for string {0}.", value));
}
所有答案的組合對我有用。 成功的實現代碼:
DateTime originalDate,dt;
String msDate = "24-12-2013";
String[] format = {"d-M-yyyy","M/d/yyyy"};
CultureInfo enUS = new CultureInfo("en-US");
foreach (var frmt in format)
{
if(DateTime.TryParseExact(msDate, frmt, enUS, DateTimeStyles.None,out dt))
{
originalDate = dt;
Console.WriteLine(originalDate.ToString());
}
}
願這對您有幫助
string dateTime= Convert.ToDateTime(datepicker.Value).ToString("M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.