Лучший способ извлечь часовой пояс из почтового заголовка Даты в Java?

Обновление:

Для версий mongodb 2.2+ более эффективный способ сделать это, описанный @JohnnyHK в другом ответе .

1.Использование $, где

db.accommodations.find( { $where: "this.name.length > 1" } );

Но ...

Javascript выполняется медленнее, чем исходные операторы, перечисленные на этой странице, но очень гибкая. См. Страницу обработки на стороне сервера для получения дополнительной информации.

blockquote>

2.Создайте дополнительное поле NamesArrayLength, обновите его длиной массива имен и затем используйте в запросах:

db.accommodations.find({"NamesArrayLength": {$gt: 1} });

Это будет лучшее решение и будет работать намного быстрее (вы можете создать на нем индекс).

6
задан Dave L. 20 September 2008 в 15:10
поделиться

4 ответа

Вероятно, самый легкий проанализировать с JodaTime, поскольку это поддерживает ISO8601, посмотрите, что Дата и время Анализирует и Форматирует в Java со Временем Joda.

DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
System.out.println(parser2.parseDateTime(your_date_string));

Времена должны всегда храниться в UTC (GMT) с часовым поясом - т.е. после того, как парсинг преобразует от часового пояса до GMT и удалит смещение перехода на летнее время и сохранит исходный часовой пояс.

Необходимо сохранить дату с часовым поясом после преобразования в UTC.

Если Вы удалите или не обработаете часовой пояс, то он вызовет проблемы при контакте с данными, которые прибыли из другого часового пояса.

1
ответ дан 17 December 2019 в 22:15
поделиться

Извлеките данные из заголовка с помощью своего рода подстроки или регулярного выражения. Проанализируйте дату с SimpleDateFormatter для создания объекта Даты.

0
ответ дан 17 December 2019 в 22:15
поделиться

Часовой пояс в электронном письме не покажет, в котором часовом поясе это было, отправляют. Некоторые программы используют когда-либо UTC или GMT. Конечно, часовой пояс является частью временной стоимости даты и должен также быть синтаксическим анализом.

Почему делают Вы хотите, знают это. - Делают Вы хотите, нормализуют метку времени? Затем используйте DateFormat для парсинга его. - Делают Вы хотите, обнаруживают часовой пояс пользователя, которые посылают электронное письмо? Это не будет правильно работать.

0
ответ дан 17 December 2019 в 22:15
поделиться

Похоже, что Вы уже упомянули это в одном из Ваших комментариев, но я думаю, что это - Ваш лучший ответ. Библиотека JavaMail содержит заголовок Даты RFC822, анализирующий код в javax.mail.internet.MailDateFormat. К сожалению, это не подвергает TimeZone, анализирующий непосредственно, таким образом, необходимо будет скопировать необходимый код непосредственно с javax.mail.internet.MailDateParser, но стоит использовать в своих интересах тщательную работу, уже сделанную.

Что касается хранения его, синтаксический анализатор даст Вам дату как смещение, таким образом, необходимо будет смочь сохранить его очень хорошо как int (разрешение В спящем режиме, переводят это в Вашу базу данных для Вас).

0
ответ дан 17 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: