Строки формата даты в .Net и Java - PullRequest
2 голосов
/ 11 мая 2010

У меня есть приложение, которое работает на C # .Net и Java . Две совершенно разные, но идентичные кодовые базы. У меня проблема с форматированием даты и чисел.

Например: пользователь, использующий вариант .Net, вводит дату и строку формата. 26 апреля 1986 года отформатирован 1986-04-26. Фактическая дата вместе со строкой формата сериализуется в файл XML. Позже другой пользователь, использующий вариант Java, открывает указанный XML-файл и просматривает дату. Я хочу, чтобы они выглядели одинаково.

Какой здесь лучший подход? Кажется, между строками формата Java и .Nets нет взаимно-однозначного сопоставления. Должен ли я ограничить возможные форматы выбором, который, как я знаю, я могу полностью представить как в .Net, так и в Java?

Ответы [ 2 ]

3 голосов
/ 12 мая 2010

Я бы настоятельно рекомендовал не писать какой-либо анализатор и средство записи самостоятельно, а полагаться на существующие библиотеки и стандарты. Поскольку вы хотите записывать / читать в / из файла XML, я настоятельно рекомендую использовать стандарт для даты и времени: ISO 8601 .

Java

Вы можете использовать Joda Time , библиотеку, которая поддерживает ISO 8601. Формат weekDateTimeNoMillis (см. doc ) предоставляет все, что вам нужно, если вы хотите сохранить возможность в конечном итоге хранить время тоже:

  • Дата
  • Время
  • Часовой пояс («Z» для UTC или +/- ЧЧ: ММ для другого часового пояса).

date (см. документ ) может быть правильным, если вы не хотите хранить информацию о времени. Он имеет формат yyyy-MM-dd (обратите внимание: если вы выполните алгоритм сортировки строк, он будет отсортирован правильно по дате)

C #:

.NET Framework уже предоставляет средство записи и синтаксического анализа ISO 8601: DateTime.UtcNow.ToString("s") запишет правильный формат yyyy-MM-ddTHH:mm:ss.

Видите ли, вам просто нужно выбрать формат (только дата, дата-время или дата-время с часовым поясом) и использовать соответствующие инструменты на обоих языках, и все будет хорошо. Если вы не укажете формат точно, могут произойти странные вещи: вы не сможете узнать 10-09-08, не зная его формата, это:

  • 9 августа 2010
  • 8 сентября 2010
  • 10 сентября 2008
  • 9 октября 2008
  • ...?

Вы / парсер просто не можете знать.

2 голосов
/ 11 мая 2010

Используйте стандартный формат. Поскольку XML сам определяет формат даты, вы именно это. См. http://www.w3schools.com/Schema/schema_dtypes_date.asp для получения дополнительной информации. Дата будет выглядеть как 2010-12-24, а дата - как 2010-12-24T23: 59.

А так как Java и .NET имеют свои собственные классы формата даты, вам просто следует принять решение об их использовании. Не существует формата даты по умолчанию, однако, если вы используете класс Java DateFormat, дата будет напечатана с использованием обнаруженного языкового стандарта платформы. И поскольку известно, что это можно изменить, в любом случае вам придется самостоятельно уточнять формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...