java.util.Date.from (
LocalDateTime.parse(
"Wed, 09 Feb 2011 12:34:27" ,
DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss" , Locale.US )
).atZone( ZoneId.of( "America/Montreal" ) )
.toInstant()
)
Вопрос и другой ответ используют устаревшие неприятные старые классы времени, которые теперь являются устаревшими, вытесняются классами java.time .
В строке ввода отсутствует какая-либо индикация часового пояса или offset-from-UTC. Итак, мы анализируем как OffsetDateTime
.
Укажите Locale
, чтобы определить (a) человеческий язык для перевода имени дня, название месяца и т. д., и (б) культурные нормы, решающие вопросы аббревиатуры, капитализации, пунктуации, разделители и т. д.
String input = "Wed, 09 Feb 2011 12:34:27" ;
Locale l = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss" , l ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
ldt.toString (): 2011-02 -09T12: 34: 27
blockquote>Часовой пояс
Как в вопросе, так и в другом ответе игнорируется ключевая проблема часового пояса.
В строке ввода отсутствует часовой пояс или смещение. Мы проанализировали как
LocalDateTime
, который не момент на временной шкале, только смутное представление о возможных моментах. Например, «Рождество начинается в полночь 25 декабря 2017 года», это не имеет значения, пока вы не разместите его в контексте определенного часового пояса. Рождество происходит гораздо раньше в Окленде Новая Зеландия, чем в Париже во Франции, а еще много еще в Монреале Квебеке.Если вы знаете предполагаемый часовой пояс, назначьте
ZoneId
для созданияZonedDateTime
.ZoneId z = ZoneId.of( "America/Montreal" ) ; ZonedDateTime zdt = ldt.atZone( z ); // Assigning a time zone to determine an actual moment on the timeline.
Преобразование
Лучше всего избежать неприятностей старые устаревшие классы времени. Но если вы должны взаимодействовать со старым кодом, который еще не обновлен до типов java.time, вы можете преобразовать между устаревшими классами и java.time. Посмотрите на новые методы, добавленные к старым классам.
A
java.util.Date
- момент на временной шкале в UTC. Поэтому нам нужно извлечьInstant
из нашегоZonedDateTime
. КлассInstant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной доля).Instant instant = zdt.toInstant() ; java.util.Date d = java.util.Date.from( instant ) ; // Convert from java.time to legacy class.
Переход в другое направление.
Instant instant = d.toInstant() ; // Convert from legacy class to java.time class. ZonedDateTime zdt = instant.atZone( z ) ; // Adjust from UTC into a particular time zone.
О java.time
Структура java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют неприятные старые классы времени legacy , такие как
java.util.Date
,Calendar
и & amp;SimpleDateFormat
.Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time .
Чтобы узнать больше, см. учебник Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обменивать java.time объекты непосредственно с вашей базой данных. Используйте драйвер JDBC , соответствующий JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в классах
java.sql.*
.Где получить классы java.time?
- Java SE 8 , Java SE 9 , Java SE 10 и позже Встроенный. Часть стандартного Java API с интегрированной реализацией. Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и Java SE 7 Большая часть функций java.time портирована на Java 6 & amp; 7 в ThreeTen-Backport .
- Android Более поздние версии реализаций пакетов Android для классов java.time. Для более ранних Android (& lt; 26) проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. Как использовать ThreeTenABP ... .
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как
Interval
,YearWeek
,YearQuarter
и more .
Их имена должны помочь вам:
android: gravity
устанавливает плотность содержимого (т.е. его подвиды) View
, в котором он используется. android: layout_gravity
устанавливает плотность View
или Layout
относительно его родительского. И пример здесь .
Из того, что я могу понять, layout_gravity - это гравитация этого вида внутри его родительского вида, а gravity - это гравитация дочерних элементов внутри этого вида.
Я думаю, что это правильно, но лучший способ узнать это - поиграться.