#c# #asp.net #datetime
#c# #asp.net #дата и время
Вопрос:
Мне нужно преобразовать дату и время в формат en-us culture…
но наши пользователи находятся в другом регионе; некоторые люди следуют
ДД.ММ.ГГГГ чч: мм:ss tt,
Я получаю сообщение об ошибке
«Строка не была распознана как допустимая дата-время»
при преобразовании
часовой пояс в ММ / ДД/ ГГГГ чч: мм: ss tt (en-us).
System.Globalization.CultureInfo oCulture = new System.Globalization.CultureInfo("en-US", false);
public string CultureStringFormat(string Date)
{
DateTime _Datetime = DateTime.Now;
try
{
_Datetime = DateTime.Parse(Date);
return _Datetime.ToString("G", oCulture);
}
catch (Exception ex)
{
try
{
_Datetime = DateTime.Parse(Date, oCulture);
return _Datetime.ToString("G", oCulture);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
return "";
}
public DateTime CultureDateFormat(string Date)
{
try
{
return DateTime.Parse(Date, oCulture, DateTimeStyles.NoCurrentDateDefault);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return DateTime.Now;
}
Thread.CurrentThread.CurrentCulture = oCulture;
string sDate = CultureStringFormat("28.12.2011 10:15:07"); // i'm getting an Error
DateTime dtDate = CultureDateFormat("28.12.2011 10:15:07"); // Error
string sDate1 = CultureStringFormat("12.27.2011 10:15:07"); // i'm getting success 12/27/2011 10:15:07 AM
DateTime dtDate1 = CultureDateFormat("12.27.2011 10:15:07"); //success 12/27/2011 10:15:07 AM
Thread.CurrentThread.CurrentCulture = oCulture; //Without this line ...
string sDate = CultureStringFormat("28.12.2011 10:15:07"); // success 12/28/2011 10:15:07 AM
DateTime dtDate = CultureDateFormat("28.12.2011 10:15:07"); // Error
string sDate1 = CultureStringFormat("12.27.2011 10:15:07");// success 12/27/2011 10:15:07 AM
DateTime dtDate1 = CultureDateFormat("12.27.2011 10:15:07");// Wrong 27.12.2011 10:15:07
Ответ №1:
Вам нужно использовать DateTime.TryParseExact
. Приведенный ниже фрагмент должен помочь вам двигаться в правильном направлении:
string myDate = "17.11.2011 08:00:00 AM";
DateTime parsedDate;
DateTime.TryParseExact(myDate,
"dd.MM.yyyy hh:mm:ss tt",
CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out parsedDate);
Ответ №2:
public DateTime? GetDate(string dateString)
{
var formats = new string[]
{
"dd.MM.yyyy hh:mm:ss",
"MM/dd/yyyy hh:mm:ss",
"dd.MM.yyyy HH:mm:ss",
"MM/dd/yyyy HH:mm:ss",
"dd.MM.yyyy hh:mm:ss tt",
"MM/dd/yyyy hh:mm:ss tt"
};
DateTime date;
if ( DateTime.TryParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out date))
{
return date;
}
return null;
}