@js-joda/timezone
Motivation
Implementation of the js-joda ZoneRulesProvider, providing the
bindings to the iana tzdb, using latest zone file generated by moment-timezone
Usage
Node
Install joda using npm
npm install @js-joda
npm install @js-joda/timezone
es5
var jsJoda = require('@js-joda/core')
require('@js-joda/timezone')
var { LocalDateTime, ZoneId, ZonedDateTime } = jsJoda;
LocalDateTime
.parse('2016-06-30T11:30')
.atZone(ZoneId.of('Europe/Berlin'))
.toString() // 2016-06-30T11:30+02:00[Europe/Berlin]
ZonedDateTime
.parse('2016-06-30T11:30+02:00[Europe/Berlin]')
.withZoneSameInstant(ZoneId.of('America/New_York'))
.toString() // 2016-06-30T05:30-04:00[America/New_York]
ZonedDateTime
.parse('2016-06-30T11:30+02:00[Europe/Berlin]')
.withZoneSameLocal(ZoneId.of('America/New_York'))
.toString() // 2016-06-30T11:30-04:00[America/New_York]
es6 / typescript
import { ZonedDateTime, ZoneId } from '@js-joda/core'
import '@js-joda/timezone'
const zdt = ZonedDateTime.now(ZoneId.of('America/New_York'))
Browser
<script src="./packages/core/dist/js-joda.js"></script>
<script src="./packages/timezone/dist/js-joda-timezone.js"></script>
<script>
// copy all js-joda classes to the global scope
for(let key in JSJoda) { this[key] = JSJoda[key]; }
LocalDateTime
.parse('2016-06-30T11:30')
.atZone(ZoneId.of('Europe/Berlin'))
.toString() // 2016-06-30T11:30+02:00[Europe/Berlin]
ZonedDateTime
.parse('2016-06-30T11:30+02:00[Europe/Berlin]')
.withZoneSameInstant(ZoneId.of('America/New_York'))
.toString() // 2016-06-30T05:30-04:00[America/New_York]
ZonedDateTime
.parse('2016-06-30T11:30+02:00[Europe/Berlin]')
.withZoneSameLocal(ZoneId.of('America/New_York'))
.toString() // 2016-06-30T11:30-04:00[America/New_York]
</script>
Reducing js-joda-timezone file size
If you don't need all the historical data that @js-joda/timezone provides, you can instead use one of the reduced files ize builds:
js-joda-timezone-10-year-range.js
covers +- five years from the current version's releasejs-joda-timezone-1970-2030.js
covers from 1970 to 2030js-joda-timezone-2012-2022.js
covers from 2012 to 2022 // deprecated, will be removed in future releasesjs-joda-timezone-2017-2027.js
covers from 2017 to 2027
To use one of these, just change your import path to the following format:
import '@js-joda/timezone/dist/js-joda-timezone-1970-2030'
Implementation details
- This ZoneRulesProvider implemantion supplies all functionality that is required by the js-joda package.
- Additional ZoneRules functionality like transitions(), etc. is not implemented.
License
-
@js-joda/timezone is released under the BSD 3-clause license:
-
The author of joda time and the lead architect of the JSR-310 is Stephen Colebourne.
-
The json versions of the iana tzdb are imported from and generated with moment-timezone.