Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перевод даты из строки в международный формат / 14 сообщений из 14, страница 1 из 1
06.11.2012, 10:21
    #38026307
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
Всем привет, немного недопонимаю ситуацию с международными форматами.

К примеру есть у меня дата
Tue Dec 04 08:15:48 IST 2012

Это строка из входящей xml. В МСДН есть способы для перевода такого формата, т.е просто главное не мешать системе и она сама все переведет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
if (DateTime.TryParseExact(element.Value,
                                    "ddd MMM dd H:mm:ss \"IST\" yyyy",
                                    enUS,
                                    System.Globalization.DateTimeStyles.NoCurrentDateDefault, out txnDate))
                            {
                                ...
                            }



Данный код нормально все переводит если строка заданного формата. Меня интересует стандарт даты: если вместо IST я получаю GMT, PDT или прочие стандарты стран - это МОЯ проблема что я не могу ее распарсить и у меня чуть выше говнокод(если так то как переводить из разных стандартов), или это проблема моих подписчиков для которых надо четко задать формат, который они должны соблюдать?
...
Рейтинг: 0 / 0
06.11.2012, 11:34
    #38026437
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLover,

R ?
...
Рейтинг: 0 / 0
06.11.2012, 11:40
    #38026447
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
pationOracleLover,

R ?

позвольте поинтересоваться, вы о чем?
...
Рейтинг: 0 / 0
06.11.2012, 11:43
    #38026453
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLoverpationOracleLover,

R ?

позвольте поинтересоваться, вы о чем?
дата по формату RFC1123?
...
Рейтинг: 0 / 0
06.11.2012, 11:48
    #38026464
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
pationOracleLoverпропущено...


позвольте поинтересоваться, вы о чем?
дата по формату RFC1123?

перевести дату в строку заданного формата нетрудно. Их десятки этих форматов. А вот из строки в дату - меня больше в моей ситуации волнует.
...
Рейтинг: 0 / 0
06.11.2012, 11:49
    #38026471
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLoverpationпропущено...

дата по формату RFC1123?

перевести дату в строку заданного формата нетрудно. Их десятки этих форматов. А вот из строки в дату - меня больше в моей ситуации волнует.

млять, дата в строке в каком формате?
...
Рейтинг: 0 / 0
06.11.2012, 11:50
    #38026476
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLover,

насколько я знаю в .NET нет поддержки для разбора дат с идентификатором часового пояса. Возможно потому что подобных идентификаторов много и их список не является неизменным. Поэтому если тебе нужно парсить даты именно в таком формате, то придется иметь список поддерживаемых идентификаторов часового пояса и парсить даты учитывая их. Список можно найти в т.н. tz database .

Проще будет если самостоятельно выбрать формат даты. Лучше остановиться на UTC т.к. это заодно решает проблему с переводом часов на летнее/зимнее время.
...
Рейтинг: 0 / 0
06.11.2012, 12:18
    #38026523
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
bazileOracleLover,

насколько я знаю в .NET нет поддержки для разбора дат с идентификатором часового пояса. Возможно потому что подобных идентификаторов много и их список не является неизменным. Поэтому если тебе нужно парсить даты именно в таком формате, то придется иметь список поддерживаемых идентификаторов часового пояса и парсить даты учитывая их. Список можно найти в т.н. tz database .

Проще будет если самостоятельно выбрать формат даты. Лучше остановиться на UTC т.к. это заодно решает проблему с переводом часов на летнее/зимнее время.

спасибо, я так и предполагал что это не должно быть моей проблемой. Обговорим формат.
...
Рейтинг: 0 / 0
06.11.2012, 12:20
    #38026527
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
pationOracleLoverпропущено...


перевести дату в строку заданного формата нетрудно. Их десятки этих форматов. А вот из строки в дату - меня больше в моей ситуации волнует.

млять, дата в строке в каком формате?

тут непрокатит
Код: c#
1.
DateTime.ParseExact(dt, "r", null);



строка не удовлетворяет формату RFC1123, а бегать парсить, добавлять запятые и менять порядок некоторых позиций это уже не то.
...
Рейтинг: 0 / 0
06.11.2012, 12:58
    #38026612
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLover,

Вопрос вдогонку. Почему ты используешь полные имена типов и не используешь var? С ними же короче и выразительнее получается:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var enUS = new CultureInfo("en-US");
if (DateTime.TryParseExact(element.Value,
                                     "ddd MMM dd H:mm:ss \"IST\" yyyy",
                                     enUS,
                                     DateTimeStyles.NoCurrentDateDefault, out txnDate))
{
    ...
}
...
Рейтинг: 0 / 0
06.11.2012, 13:23
    #38026657
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
bazileOracleLover,

Вопрос вдогонку. Почему ты используешь полные имена типов и не используешь var? С ними же короче и выразительнее получается:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var enUS = new CultureInfo("en-US");
if (DateTime.TryParseExact(element.Value,
                                     "ddd MMM dd H:mm:ss \"IST\" yyyy",
                                     enUS,
                                     DateTimeStyles.NoCurrentDateDefault, out txnDate))
{
    ...
}



я сторонник старой школы и считаю var там где ты явно знаешь тип - говнокодом.
...
Рейтинг: 0 / 0
06.11.2012, 13:28
    #38026667
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
OracleLoverbazileOracleLover,

Вопрос вдогонку. Почему ты используешь полные имена типов и не используешь var? С ними же короче и выразительнее получается:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var enUS = new CultureInfo("en-US");
if (DateTime.TryParseExact(element.Value,
                                     "ddd MMM dd H:mm:ss \"IST\" yyyy",
                                     enUS,
                                     DateTimeStyles.NoCurrentDateDefault, out txnDate))
{
    ...
}



я сторонник старой школы и считаю var там где ты явно знаешь тип - говнокодом.Забавно. Я наоборот поступаю: там, где явно из текста понятно, какой тип у переменной (new CultureInfo), то использую var. ReSharper, мне кажется, со мною солидарен :)
...
Рейтинг: 0 / 0
06.11.2012, 13:33
    #38026677
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
я могу конечно привести пример из своей практики где использование var с большими потерями дало нам изменение этого кода. С тех пор я больше на грабли не наступал. Нельзя написать var T = null. Отсюда и все проблемы.
...
Рейтинг: 0 / 0
06.11.2012, 13:43
    #38026704
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод даты из строки в международный формат
skyANAЯ наоборот поступаю: там, где явно из текста понятно, какой тип у переменной (new CultureInfo), то использую var.
Аналогично.

OracleLoverя сторонник старой школы и считаю var там где ты явно знаешь тип - говнокодом.
Говнокодом использование var становится в коде вида "var smth = DoWork()" когда тип переменной неясен без взгляда на другие части кода. В случае когда мы объявляем и сразу инициализируем переменную использование var делает код более компактным и, следовательно, более легким для чтения.

OracleLoverя могу конечно привести пример из своей практики где использование var с большими потерями дало нам изменение этого кода.
Никто не говорит что надо всегда использовать var. Есть ситуации когда использование var упрошает чтение кода, есть когда делают код хуже.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перевод даты из строки в международный формат / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]