powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сравнение DateTime разных культур
25 сообщений из 56, страница 1 из 3
Сравнение DateTime разных культур
    #38608565
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема. Сохраняю DateTime.Now в строку с нужным мне форматом:

Код: c#
1.
DateTime.Now.ToString("dd/MM/yyyy");



Потом эту дату строкой пишу в куки пользователю. Потом приходит эта кука мне от пользователя, и я сравниваю её с DateTime.Now. Под дебагом смотрю - DateTime.Now = 4/8/2014, а DateTime, который получился у меня после конвертации из строки клиента методом

Код: c#
1.
2.
3.
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
DateTime datetime_Client;
DateTime.TryParse(context.Request.Cookies["datetime"].Value, cultureInfo, DateTimeStyles.None, out datetime_Client)



равен 8/4/2014.

А должны быть равны.

Как сделать их равными?
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608572
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что если для ToString использовал одну культуру, то и для парсинга ту же самую культуру нужно использовать. Если другую культуру буду использовать - получу неравенство для фактически равных дат. Так?
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608631
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

... как мне кажется, в подобных случаях (когда не уверен, в каких папуа-ново-гвинеях сидит клиент) нужно использовать либо UtcNow, либо CreateSpecificCulture(en-US), например, чтобы отойти от этих культур и часовых поясов ...
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608663
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Есть подозрение, что если для ToString использовал одну культуру, то и для парсинга ту же самую культуру нужно использовать. Если другую культуру буду использовать - получу неравенство для фактически равных дат. Так?Да, верно.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608732
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320Есть подозрение, что если для ToString использовал одну культуру, то и для парсинга ту же самую культуру нужно использовать. Если другую культуру буду использовать - получу неравенство для фактически равных дат. Так?Да, верно.
А это значит, что эту культуру надо где-то сохранять, т. к. если юзер поменял культуру (например, раскладку переключил), то CurrentCulture уже другую культуру будет иметь. Так?

ПримечаниеЧего стоит хотя бы то, что при разных запусках одного и того же приложения на одной и той же машине можно получать информацию в эксепшенах на разных языках - зависит от установленных языков фреймворка и текущих раскладках пользователя.


carrotikuser7320,

... как мне кажется, в подобных случаях (когда не уверен, в каких папуа-ново-гвинеях сидит клиент) нужно использовать либо UtcNow, либо CreateSpecificCulture(en-US), например, чтобы отойти от этих культур и часовых поясов ...
У меня проблема в формате вывода времени. Мне нужно одновременно и культуру сохранить, и в строку дату-время вывести с нужным ограничением. Т. е. я хочу вывести только число, месяц, год, часы, минуты, секунды. Пишу "dd/MM/yyyy" - хоппа, это формат для ru-культур! Т. е. получается, что культура задаётся не только через объект CultureInfo, но и через форматирующую строку!



При текущей культуре en-us вывожу как "dd/MM/yyyy HH:mm:ss". При парсинге с той же текущей культурой, что и при выводе, получаю как "MM/dd/yyyy HH:mm:ss" - т. е. перепутанные местами числа и месяцы. СПРАШИВАЕТСЯ, ПОЧЕМУ ФОРМАТ ВЫВОДА ВЛИЯЕТ НА КУЛЬТУРУ?!

Получается, что, чтобы формат вывода не влиял на культуру, всегда надо вместе с форматом использовать и CultureInfo?
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608746
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А это значит, что эту культуру надо где-то сохранять, т. к. если юзер поменял культуру (например, раскладку переключил), то CurrentCulture уже другую культуру будет иметь. Так?

Не совсем так. Игры с культурами уместны только там, где пользователь взаимодействует с ПО. В тех местах, где пользователю всё равно какая культура, используйте Invariant культуру, например для хранения даты/времени в куках -- какая пользователю разница в каком формате вы её там храните?

user7320Т. е. получается, что культура задаётся не только через объект CultureInfo, но и через форматирующую строку!

Не совсем так. Когда вы указываете разделитель '/' для даты, он может быть отображён в разных культурах по-разному, где-то как '/', где-то как '-' или даже '.'

user7320 перепутанные местами числа и месяцы

В англо-американской культуре в начале идёт месяц, в русской наоборот. Если вам так важна культура, не указывайте формат даты как dd/MM/yyyy, используйте общий формат: Строки стандартных форматов даты и времени
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608752
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, сделал так. Завёл себе статичное поле типа CultureInfo с нужной мне культурой, вбитой ручками. И статичное строковое поле с форматом "dd/MM/yyyy HH:mm:ss". И теперь все даты к этой культуре привожу при выводе в строку и парсинге, а при только выводе в строку ещё и этот формат добавляю. Вроде, пока всё работает, как я хотел.

Как я понял, сам формат хранения даты и времени в DateTime культурнонезависимый (т. к. всё по отдельным компонентам хранится), а культура и формат влияют только на вывод (в строку) и парсинг.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608754
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Получается, что, чтобы формат вывода не влиял на культуру, всегда надо вместе с форматом использовать и CultureInfo?

Рекомендую почитать от корки до корки

http://msdn.microsoft.com/ru-ru/library/system.globalization.cultureinfo.aspx

все вопросы снимет как рукой.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608757
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Как я понял, сам формат хранения даты и времени в DateTime культурнонезависимый (т. к. всё по отдельным компонентам хранится), а культура и формат влияют только на вывод (в строку) и парсинг.

Естественно. Есть ещё такие понятия, как глобальная культура. Её можно задать программно или в web.config, чтобы не указывать конкретный CultureInfo каждый раз.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608760
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ англо-американской культуре в начале идёт месяц, в русской наоборот. Если вам так важна культура, не указывайте формат даты как dd/MM/yyyy, используйте общий формат: Строки стандартных форматов даты и времени
Да, я знаю. Ещё заметил, что "инвариантная" и "стандартная" культура - американская. Кто бы сомневался. )))
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608766
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Да, я знаю. Ещё заметил, что "инвариантная" и "стандартная" культура - американская. Кто бы сомневался. )))

В общем-то да. Но есть ньюанс. Инваринтная культура не меняется никогда и всегда одинаковая на всех платформах, типо.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608809
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320
Да, я знаю. Ещё заметил, что "инвариантная" и "стандартная" культура - американская. Кто бы сомневался. )))

...если придется когда-либо общаться программно с почтовым сервером по IMAP-протоколу, то там формат даты только такой: dd-MMM-yyyy, т.е. вида 08-Apr-2014, и хучьубей ...
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608953
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikuser7320
Да, я знаю. Ещё заметил, что "инвариантная" и "стандартная" культура - американская. Кто бы сомневался. )))

...если придется когда-либо общаться программно с почтовым сервером по IMAP-протоколу, то там формат даты только такой: dd-MMM-yyyy, т.е. вида 08-Apr-2014, и хучьубей ...
Это не "инвариантная и стандартная"? Т. е., надо просто подстроиться под протокол, и всё будет хорошо?
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608982
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Это не "инвариантная и стандартная"? Т. е., надо просто подстроиться под протокол, и всё будет хорошо?

... в данном конкретном случае - да ... Но стандарты протокола IMAP живут и побеждают уже лет эдак 30 и никто ничего менять не хочет ...
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38608989
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikuser7320Это не "инвариантная и стандартная"? Т. е., надо просто подстроиться под протокол, и всё будет хорошо?

... в данном конкретном случае - да ... Но стандарты протокола IMAP живут и побеждают уже лет эдак 30 и никто ничего менять не хочет ...
Наверное, просто всем по...
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609208
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609209
user7320,

вот это вот MM/dd/yyyy
это уже не культура
это - бескультурие !
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609218
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем timestamp ненравится? Засунул число в куки и переводи потом куда хошь, в любой формат, хоть на сервере, хоть на клиенте. А с ентими разными форматами можно влететь - alert(Date.parse('09.04.2014 5:27:27')); // NaN
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609224
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Культуристuser7320,

вот это вот MM/dd/yyyy
это уже не культура
это - бескультурие !
А ещё у них недесятичная метрическая система!

Но зато нельзя в двойное отрицание.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609226
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stЧем timestamp ненравится? Засунул число в куки и переводи потом куда хошь, в любой формат, хоть на сервере, хоть на клиенте.
Я ещё сравниваю на устаревание. С чем сравнивать на стуревание? - С DateTime.Now - как раз подходит. А как сравнить TimeStamp с DateTime?

st_stalert(Date.parse('09.04.2014 5:27:27')); // NaN
Я говно-джаваскрипт стараюсь не использовать.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609417
zadral
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
            String now = DateTime.Now.ToString("s");            
            Console.WriteLine(now);

            DateTime result = DateTime.ParseExact(now, "s", null);
            Console.WriteLine(result.ToString("U"));

            Console.ReadLine();



15853545 - inogda luchshe zevatj chem govoritj....
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609436
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я говно-джаваскрипт стараюсь не использовать.Пишу говно на c#
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609442
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320st_stЧем timestamp ненравится? Засунул число в куки и переводи потом куда хошь, в любой формат, хоть на сервере, хоть на клиенте.
Я ещё сравниваю на устаревание.В Cookie писать дату, которую проверять на устаревание. Любопытно, а expires почему не подходит?
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609895
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

Я ещё сравниваю на устаревание.В Cookie писать дату, которую проверять на устаревание. Любопытно, а expires почему не подходит?
Потому что я ещё добавляю к дате мусор в разные места (и чтобы длина полученной строки менялась) и хеширую всё это дело. На сервере, соответственно, обратно всё очищаю. "Чтобы никто не догадался", что я там храню.

skyANAuser7320Я говно-джаваскрипт стараюсь не использовать.Пишу говно на c#
Ага. )

zadral
Код: c#
1.
2.
3.
4.
5.
6.
7.
            String now = DateTime.Now.ToString("s");            
            Console.WriteLine(now);

            DateTime result = DateTime.ParseExact(now, "s", null);
            Console.WriteLine(result.ToString("U"));

            Console.ReadLine();



15853545 - inogda luchshe zevatj chem govoritj....
Спасибо, щас проверю.

Только вместо ParseExact(now, "s", null) надо, наверное, ParseExact(now, "s", CultureInfo.InvariantCulture)?

ЗЫ. Привет, МСУ. Сколько раз уже штангу поднимаешь и сколько килограмм? Я как-то давно делал 80кг х 5 раз, но щас всё больше на подтягивания.
...
Рейтинг: 0 / 0
Сравнение DateTime разных культур
    #38609975
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
В Cookie писать дату, которую проверять на устаревание. Любопытно, а expires почему не подходит?
Потому что я ещё добавляю к дате мусор в разные места (и чтобы длина полученной строки менялась) и хеширую всё это дело. На сервере, соответственно, обратно всё очищаю. "Чтобы никто не догадался", что я там храню.Дата срока истечения лицензии что-ли? Если да, то на фига в Cookie то её пихать?
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 1 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сравнение DateTime разных культур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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