TS Luxon is a library for working with dates and times in Javscript and Typescript.
This repo was initially created by GillesDebunne which of course started from Luxon itself.
Many thanks to both of them for this fantastic work.
I decided to fork his work, because we don't know for sure if and when Luxon will adopt this source.
I realized moment wasn't suitable anymore for my projects, but I couldn't wait to have a more stable version and at this time Luxon (v 1.25.0) had structural issues, which resulted in errors in my Angular projects.
With v6 I introduced a new release tag next
.
These versions are basically release candidates that can be tried out before they get released.
The next version tag gets cleared out automatically upon release of the latest stable version.
The beta releases instead, like it's always been, represent unstable releases, and they're subject to dramatic changes.
This finally solves the coexistence of ESM and CJS.
Many thanks to the autors of arethetypeswrong and publint, which were essential tools to debug and understand the package.json.
We reached a pretty much stable point for Intl support, which means we could finally drop that "compat" types that were needed to have a stable behaviour across various versions.
So in order to make everything work as expected you should have lib es2021 or later in your tsconfig.
Another option could be using skipLibCheck
, but depending on how to want to manage your compiler, you might want to keep this off (default).
{
"include": [
"src"
],
"exclude": [
"test"
],
"compilerOptions": {
"module": "CommonJS",
"target": "es6",
"lib": [
"esnext"
]
}
}
Seriously. It's 2025. If you're using IE11 or require-js you may as well stick with date-fns, or moment. We drop heavy old stuff like the UMD bundle. But if you want to have tsLuxon in a global variable like it was before, you can do something like this:
<script type="module">
import * as tsLuxon from "https://unpkg.com/ts-luxon?module";
window.tsLuxon = tsLuxon;
</script>
You might even adjust this to work with require js, if you're happy! 😀 Although seriously, in that case, I suggest you to compile your own bundle with esbuild starting from the esm build. It's literally one line of code.
Compared to v4 here I only changed how the library is built and the outputs. It should be completely transparent to the user given the adjustments to the package.json and given the fact that the es6 export of v4 is interpreted as CJS anyways. I'm working on adding a real ESM module output to v5, but it seems there's no way of making the two coexist.
See the docs page
DateTime.now().setZone('America/New_York').minus({ weeks: 1 }).endOf('day').toISO();
- DateTime, Duration, and Interval types.
- Immutable, chainable, unambiguous API.
- Parsing and formatting for common and custom formats.
- Native time zone and Intl support (no locale or tz files).
npm i ts-luxon --save
then
import {DateTime} from "ts-luxon";
const myDto = DateTime.local();
You can download the umd bundle from here:
See the docs page
and the demo page
more example will be added! For suggestions open an issue or a PR (yes, even on the demo site if you want)!
Thanks to fire332 for his contribution about package.json
Please, read the CONTRIBUTING.md you can find in the master branch.