Вы не можете проанализировать ago
и Aug
с одинаковыми CultureInfo
без любых манипуляций со строкой в вашем пользовательском формате строки.
Давайте сначала запустим некоторый код;
foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
if (culture.DateTimeFormat.MonthNames.Contains("ago") ||
culture.DateTimeFormat.AbbreviatedMonthNames.Contains("ago"))
{
if (culture.DateTimeFormat.MonthNames.Contains("Aug") ||
culture.DateTimeFormat.AbbreviatedMonthNames.Contains("Aug"))
{
Console.WriteLine(culture.Name);
}
}
}
Этот код не записывает никакого имени CultureInfo
на моем компьютере и, вероятно, не будет печататься на вашем. Это означает, что нет информации о культуре, которая включала бы оба названия месяца и сокращенное название месяца. Даже я проверяю названия родительного месяца (который включает в себя свойства AbbreviatedMonthGenitiveNames
и MonthGenitiveNames
), но не повезло.
Если вы можете разобрать Aug-24-19 19:21:14
stringс DateTime.Parse
напрямую, это означает, что ваш CurrentCulture
имеет Aug
в качестве сокращенного названия месяца и MMM-dd-yy HH:mm:ss
в качестве стандартного формата даты и времени.
Как можноЯ занимаюсь преобразованием любого формата даты
Вы не можете. Вы должны точно знать, какой формат вашей строки, чтобы предотвратить неоднозначные ситуации. Например, давайте возьмем 01-02-2019
строку. Это 2 января или 1 февраля? Можете ли вы сказать это, посмотрев только его формат? Разные люди в разных регионах мира читают этот формат по-разному.
и предпочтительно преобразовать его в "стандартное тихоокеанское время"
После успешного анализа строки (помните, что DateTime.Kind
должно быть Local
), вы можете использоватьTimeZoneInfo.ConvertTimeBySystemTimeZoneId
метод, чтобы преобразовать это как;
var myDate = DateTime.Parse("Aug-24-19 19:21:14 ");
var myPSTdate = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(myDate , "Pacific Standard Time");
Что я здесь не так делаю?
Насколько я вижу,Вы не делаете ничего плохого. Ваши входные данные не являются надежными для анализа с той же культурной информацией. Вот и все. Некоторые люди называют эту ситуацию мусором, мусором . Если вы можете исправить свои входные данные, вы должны сначала исправить их формат.