Оба правильные, но они интерпретируются как даты с двумя разными часовыми поясами. Итак, вы сравнили яблоки и апельсины:
// local dates
new Date("Jul 8, 2005").toISOString() // "2005-07-08T07:00:00.000Z"
new Date("2005-07-08T00:00-07:00").toISOString() // "2005-07-08T07:00:00.000Z"
// UTC dates
new Date("Jul 8, 2005 UTC").toISOString() // "2005-07-08T00:00:00.000Z"
new Date("2005-07-08").toISOString() // "2005-07-08T00:00:00.000Z"
Я удалил вызов Date.parse()
, так как он автоматически используется для строкового аргумента. Я также сравнивал даты с использованием формата ISO8601 , чтобы вы могли визуально сравнивать даты между вашими местными датами и датами UTC. Время разговора составляет 7 часов, что является разницей в часовом поясе и почему ваши тесты показывают две разные даты.
Другим способом создания этих же локальных / UTC-дат будет:
new Date(2005, 7-1, 8) // "2005-07-08T07:00:00.000Z"
new Date(Date.UTC(2005, 7-1, 8)) // "2005-07-08T00:00:00.000Z"
Но я по-прежнему настоятельно рекомендую Moment.js , который как простой, но мощный :
// parse string
moment("2005-07-08").format() // "2005-07-08T00:00:00+02:00"
moment.utc("2005-07-08").format() // "2005-07-08T00:00:00Z"
// year, month, day, etc.
moment([2005, 7-1, 8]).format() // "2005-07-08T00:00:00+02:00"
moment.utc([2005, 7-1, 8]).format() // "2005-07-08T00:00:00Z"
javax.enterprise.context.SessionScoped
( JSR 346 ), а все остальные аннотации в пакете javax.enterprise.context.*
поддерживают контекст CDI . CDI предоставляет альтернативный, универсальный и более мощный механизм для инъекций зависимостей, управления компонентами и общим ресурсом в пространстве Java EE. Это альтернатива управляемым bean-компонентам JSF, и она настроена на то, чтобы даже заменить механизм управления компонентом JSF в будущей версии JSF . В настоящее время JSF и CDI аннотированные бобы взаимозаменяемы в любом данном веб-приложении Java EE (с учетом нескольких незначительных ограничений). CDI-аннотированные бобы, однако, простираются далеко за пределы области веб-уровня, поэтому спецификация Java EE развивается, чтобы сделать CDI стандартным компонентом и механизмом DI. Хотя CDI может быть очевидным выбором для всей разработки Java EE, управляемые bean-компоненты JSF переносимы в контейнерах сервлетов (Tomcat) и серверах приложений (Glassfish, JBoss и т. Д.). Компоненты CDI могут работать только с полными серверами приложений. Однако с помощью некоторые работы Tomcat 7 могут быть подключены для поддержки CDI. В частности, javax.enterprise.context.SessionScoped
представляет собой параллельную реализацию Сессии сеанса JSF в CDI. javax.faces.bean.SessionScoped
( JSR 314 ), а все остальные аннотации в пакете javax.faces.bean.*
поддерживают JSF-специфический механизм вливания и механизм управления бобами. Бобы, аннотированные аннотациями JSF, однако полезны только в веб-уровне. Все области, доступные с аннотациями JSF, были реплицированы в спецификации CDI. javax.annotation.ManagedBean
( JSR 316 ) и другие связанные с DI аннотации в javax.annotation.*
являются попыткой обобщить аннотации на основе JSF для других применений в спецификации Java EE и действительно не должны использоваться конечным разработчиком. Почему они существуют? Ну, ИМО, переход от фасоли JSF к компонентам CDI - это естественная эволюция технологии. Бобы JSF отлично справились, но Spring, Guice и Seam сделали очевидным, что технологии недостаточно. Необходимо также устранить разрыв между веб-компонентами и EJB, и ответ на эту потребность - это CDI.
См. также следующие связанные вопросы: