datevolt 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +189 -160
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,50 +1,80 @@
1
1
  # datevolt
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/datevolt.svg)](https://www.npmjs.com/package/datevolt)
4
- [![license](https://img.shields.io/npm/l/datevolt.svg)](LICENSE)
3
+ [![npm version](https://img.shields.io/npm/v/datevolt.svg?style=flat-square)](https://www.npmjs.com/package/datevolt)
4
+ [![npm downloads](https://img.shields.io/npm/dm/datevolt.svg?style=flat-square)](https://www.npmjs.com/package/datevolt)
5
+ [![license](https://img.shields.io/npm/l/datevolt.svg?style=flat-square)](LICENSE)
6
+ [![zero dependencies](https://img.shields.io/badge/dependencies-0-brightgreen?style=flat-square)](package.json)
7
+ [![React Native](https://img.shields.io/badge/React%20Native-compatible-blue?style=flat-square)](https://reactnative.dev)
5
8
 
6
- > **A complete, lightweight, zero-dependency JavaScript date library** with a `moment.js`-compatible chainable API.
9
+ A complete, lightweight, zero-dependency JavaScript date library with a familiar chainable API. Built with React Native CLI in mind (Android + iOS, Hermes & JSC), and works just as well in Node.js and browsers.
7
10
 
8
- - ⚡ **~8 KB** gzipped vs moment's ~72 KB
9
- - 📦 **Zero dependencies** — no node_modules bloat
10
- - 🔗 **moment.js-style API** — `parse`, `format`, `add/subtract`, `diff`, `fromNow`, `calendar`, `duration`, `locale`
11
- - 🌍 **Timezone & UTC support** — `utc()`, `utcOffset()`, `isDST()`
12
- - 🗓 **Built-in locales**: `en`, `hi`, `es`, `fr`, `de`, `ar`, `ja`extend with `defineLocale()`
13
- - 📱 **React Native ready** — pure JS Date math, no `Intl` dependency, Metro bundler compatible
11
+ ---
12
+
13
+ ## Why datevolt?
14
+
15
+ Most date libraries are either too heavy for mobile apps or too minimal to be useful. datevolt hits the middle ground full-featured, tiny footprint, no dependencies, and no native modules.
16
+
17
+ | Feature | datevolt |
18
+ |---|---|
19
+ | Size (gzipped) | ~8 KB |
20
+ | Size (minified) | ~25 KB |
21
+ | Dependencies | 0 |
22
+ | Tree-shakeable | ✅ |
23
+ | Immutable `.clone()` | ✅ |
24
+ | React Native (Hermes + JSC) | ✅ |
25
+ | Node.js | ✅ |
26
+ | Browser | ✅ |
27
+ | Chainable API | ✅ |
28
+ | Built-in i18n | ✅ |
29
+
30
+ No `Intl` dependency. No native modules. No configuration. Just install and use.
14
31
 
15
32
  ---
16
33
 
17
- ## Install
34
+ ## Installation
18
35
 
19
36
  ```bash
37
+ # npm
20
38
  npm install datevolt
39
+
40
+ # yarn
41
+ yarn add datevolt
21
42
  ```
22
43
 
44
+ ---
45
+
23
46
  ## Quick Start
24
47
 
25
48
  ```js
26
49
  const datevolt = require('datevolt');
50
+ // or
51
+ import datevolt from 'datevolt';
27
52
 
28
- // Current date/time
29
- datevolt().format('YYYY-MM-DD HH:mm:ss');
53
+ datevolt().format('YYYY-MM-DD HH:mm:ss') // "2024-06-15 14:30:00"
54
+ datevolt('2024-06-15').format('dddd, MMMM D, YYYY') // "Saturday, June 15, 2024"
55
+ datevolt().add(7, 'days').format('DD MMM YYYY') // "22 Jun 2024"
56
+ datevolt('2024-01-01').fromNow() // "6 months ago"
57
+ datevolt('2024-06-15').diff('2024-01-01', 'days') // 166
58
+ datevolt('2024-06-15').isBefore('2024-12-31') // true
59
+ ```
30
60
 
31
- // Parse ISO string
32
- datevolt('2024-06-15').format('dddd, MMMM D, YYYY'); // "Saturday, June 15, 2024"
61
+ ---
33
62
 
34
- // Add / subtract
35
- datevolt('2024-01-31').add(1, 'month').format('YYYY-MM-DD'); // "2024-02-29"
63
+ ## React Native
36
64
 
37
- // Relative time
38
- datevolt('2024-01-01').fromNow(); // "6 months ago"
39
- datevolt().add(2, 'hours').toNow(); // "in 2 hours"
65
+ Works out of the box — no extra setup, no metro config changes needed.
40
66
 
41
- // Diff
42
- datevolt('2024-06-15').diff('2024-01-01', 'days'); // 166
67
+ ```js
68
+ import datevolt from 'datevolt';
43
69
 
44
- // Compare
45
- datevolt('2024-06-15').isBefore('2024-12-31'); // true
70
+ const DateDisplay = () => {
71
+ const [today] = React.useState(datevolt().format('LL'));
72
+ return <Text>{today}</Text>; // "June 15, 2024"
73
+ };
46
74
  ```
47
75
 
76
+ Tested on Android (Hermes) and iOS (JSC). Pure JavaScript — no native bridge needed.
77
+
48
78
  ---
49
79
 
50
80
  ## API Reference
@@ -52,52 +82,56 @@ datevolt('2024-06-15').isBefore('2024-12-31'); // true
52
82
  ### Parsing
53
83
 
54
84
  ```js
55
- datevolt() // now
56
- datevolt('2024-06-15') // ISO date string (local midnight)
57
- datevolt('2024-06-15T10:30:00') // ISO datetime
58
- datevolt('2024-06-15T10:30:00Z') // UTC
59
- datevolt('2024-06-15T10:30:00+05:30') // with offset
60
- datevolt('15/06/2024', 'DD/MM/YYYY') // with format string
61
- datevolt('15/06/2024', ['DD/MM/YYYY', 'YYYY-MM-DD']) // multiple formats
62
- datevolt([2024, 5, 15]) // array [Y, M(0-based), D]
63
- datevolt([2024, 5, 15, 14, 30, 0, 0]) // array with time
64
- datevolt({ year:2024, month:5, day:15 }) // object
65
- datevolt(1718438400000) // unix milliseconds
66
- datevolt.unix(1718438400) // unix seconds
67
- datevolt.utc('2024-06-15T10:30:00') // UTC mode
85
+ datevolt() // now
86
+ datevolt('2024-06-15') // ISO date (local midnight)
87
+ datevolt('2024-06-15T10:30:00') // ISO datetime
88
+ datevolt('2024-06-15T10:30:00Z') // UTC
89
+ datevolt('2024-06-15T10:30:00+05:30') // with offset
90
+ datevolt('15/06/2024', 'DD/MM/YYYY') // custom format
91
+ datevolt('15/06/2024', ['DD/MM/YYYY', 'YYYY-MM-DD']) // multiple formats
92
+ datevolt([2024, 5, 15]) // array [Y, M(0-based), D]
93
+ datevolt([2024, 5, 15, 14, 30, 0, 0]) // array with time
94
+ datevolt({ year: 2024, month: 5, day: 15 }) // object
95
+ datevolt(1718438400000) // unix milliseconds
96
+ datevolt.unix(1718438400) // unix seconds
97
+ datevolt.utc('2024-06-15T10:30:00') // UTC mode
68
98
 
69
99
  // Validation
70
- datevolt('2024-06-15').isValid() // true
71
- datevolt('not-a-date').isValid() // false
100
+ datevolt('2024-06-15').isValid() // true
101
+ datevolt('not-a-date').isValid() // false
72
102
  ```
73
103
 
74
- ### Get + Set
104
+ ---
105
+
106
+ ### Get & Set
75
107
 
76
108
  ```js
77
- var d = datevolt('2024-06-15T14:30:45.123');
78
-
79
- d.year() // 2024 d.year(2025)
80
- d.month() // 5 (0-based) d.month(0)
81
- d.date() // 15 d.date(1)
82
- d.day() // 6 (Saturday) d.day(1) // set to Monday
83
- d.hour() // 14 d.hour(9)
84
- d.minute() // 30 d.minute(0)
85
- d.second() // 45 d.second(0)
109
+ const d = datevolt('2024-06-15T14:30:45.123');
110
+
111
+ d.year() // 2024d.year(2025)
112
+ d.month() // 5 d.month(0) (0-based, Jan = 0)
113
+ d.date() // 15d.date(1)
114
+ d.day() // 6d.day(1) (0 = Sun, 6 = Sat)
115
+ d.hour() // 14d.hour(9)
116
+ d.minute() // 30d.minute(0)
117
+ d.second() // 45d.second(0)
86
118
  d.millisecond() // 123
87
119
 
88
- d.quarter() // 2 (Apr–Jun)
120
+ d.quarter() // 2
89
121
  d.dayOfYear() // 167
90
122
  d.daysInMonth() // 30
91
123
  d.week() // ISO week number
92
124
  d.isoWeek()
125
+ d.isoWeekday() // 1 = Mon ... 7 = Sun
93
126
  d.weeksInYear()
94
- d.isoWeekday() // 1=Mon ... 7=Sun
95
127
 
96
128
  // Generic
97
129
  d.get('year') // 2024
98
130
  d.set('year', 2025) // chainable
99
131
  ```
100
132
 
133
+ ---
134
+
101
135
  ### Manipulate
102
136
 
103
137
  ```js
@@ -106,23 +140,20 @@ datevolt().add(1, 'month')
106
140
  datevolt().add(2, 'years')
107
141
  datevolt().add(3, 'hours')
108
142
  datevolt().add(30, 'minutes')
109
- datevolt().add(15, 'seconds')
110
- datevolt().add({ days: 1, hours: 2, minutes: 30 }) // object form
143
+ datevolt().add({ days: 1, hours: 2, minutes: 30 }) // object form
111
144
 
112
145
  datevolt().subtract(1, 'week')
113
146
  datevolt().subtract(3, 'months')
114
147
 
115
- // Chained
116
- datevolt('2024-01-01').add(1,'year').subtract(3,'months').startOf('month')
148
+ // Chainable
149
+ datevolt('2024-01-01').add(1, 'year').subtract(3, 'months').startOf('month')
117
150
 
118
151
  // startOf / endOf
119
152
  datevolt().startOf('year') // Jan 1, 00:00:00.000
120
153
  datevolt().startOf('month') // 1st of month, 00:00:00.000
121
- datevolt().startOf('week') // locale-aware week start
122
- datevolt().startOf('day') // 00:00:00.000
154
+ datevolt().startOf('week')
155
+ datevolt().startOf('day')
123
156
  datevolt().startOf('hour')
124
- datevolt().startOf('minute')
125
- datevolt().startOf('second')
126
157
  datevolt().startOf('quarter')
127
158
  datevolt().startOf('isoWeek')
128
159
 
@@ -132,34 +163,37 @@ datevolt().endOf('month') // last day, 23:59:59.999
132
163
  datevolt().clone() // immutable copy
133
164
  ```
134
165
 
166
+ ---
167
+
135
168
  ### Format
136
169
 
137
170
  ```js
138
- datevolt().format() // "1:30 PM" (LT)
139
- datevolt().format('YYYY-MM-DD') // "2024-06-15"
140
- datevolt().format('YYYY-MM-DD HH:mm:ss') // "2024-06-15 14:30:45"
141
- datevolt().format('dddd, MMMM D, YYYY') // "Saturday, June 15, 2024"
142
- datevolt().format('MMM Do, YYYY') // "Jun 15th, 2024"
143
- datevolt().format('h:mm A') // "2:30 PM"
144
- datevolt().format('[Today is] dddd') // "Today is Saturday"
145
- datevolt().format('L') // "06/15/2024"
146
- datevolt().format('LL') // "June 15, 2024"
147
- datevolt().format('LLL') // "June 15, 2024 2:30 PM"
148
- datevolt().format('LLLL') // "Saturday, June 15, 2024 2:30 PM"
171
+ datevolt().format('YYYY-MM-DD') // "2024-06-15"
172
+ datevolt().format('YYYY-MM-DD HH:mm:ss') // "2024-06-15 14:30:45"
173
+ datevolt().format('dddd, MMMM D, YYYY') // "Saturday, June 15, 2024"
174
+ datevolt().format('MMM Do, YYYY') // "Jun 15th, 2024"
175
+ datevolt().format('h:mm A') // "2:30 PM"
176
+ datevolt().format('[Today is] dddd') // "Today is Saturday"
177
+ datevolt().format('L') // "06/15/2024"
178
+ datevolt().format('LL') // "June 15, 2024"
179
+ datevolt().format('LLL') // "June 15, 2024 2:30 PM"
180
+ datevolt().format('LLLL') // "Saturday, June 15, 2024 2:30 PM"
149
181
  ```
150
182
 
183
+ **Format Tokens**
184
+
151
185
  | Token | Output | Description |
152
186
  |-------|--------|-------------|
153
187
  | `YYYY` | 2024 | Full year |
154
188
  | `YY` | 24 | 2-digit year |
155
- | `MMMM` | June | Month name |
189
+ | `MMMM` | June | Full month name |
156
190
  | `MMM` | Jun | Short month |
157
- | `MM` | 06 | Month 2-digit |
191
+ | `MM` | 06 | Month (2-digit) |
158
192
  | `M` | 6 | Month |
159
- | `DD` | 15 | Day 2-digit |
193
+ | `DD` | 15 | Day (2-digit) |
160
194
  | `Do` | 15th | Ordinal day |
161
195
  | `D` | 15 | Day |
162
- | `dddd` | Saturday | Weekday name |
196
+ | `dddd` | Saturday | Full weekday |
163
197
  | `ddd` | Sat | Short weekday |
164
198
  | `HH` | 14 | 24-hour |
165
199
  | `h` | 2 | 12-hour |
@@ -167,173 +201,168 @@ datevolt().format('LLLL') // "Saturday, June 15, 2024 2:30 PM"
167
201
  | `ss` | 45 | Seconds |
168
202
  | `SSS` | 123 | Milliseconds |
169
203
  | `A` | PM | AM/PM |
170
- | `Z` | +05:30 | Timezone |
204
+ | `Z` | +05:30 | UTC offset |
171
205
  | `X` | 1718438400 | Unix seconds |
172
206
  | `x` | 1718438400000 | Unix ms |
173
207
  | `Q` | 2 | Quarter |
174
208
 
209
+ ---
210
+
175
211
  ### Relative Time
176
212
 
177
213
  ```js
178
- datevolt('2024-01-01').fromNow() // "6 months ago"
179
- datevolt().add(2,'hours').fromNow() // "in 2 hours"
180
- datevolt().subtract(3,'days').fromNow(true) // "3 days" (without suffix)
214
+ datevolt('2024-01-01').fromNow() // "6 months ago"
215
+ datevolt().add(2, 'hours').fromNow() // "in 2 hours"
216
+ datevolt().subtract(3, 'days').fromNow(true) // "3 days" (no suffix)
181
217
 
182
- datevolt('2024-01-01').from('2024-06-15') // "6 months ago"
183
- datevolt().add(5,'minutes').toNow() // "in 5 minutes"
184
- datevolt('2024-01-01').to('2024-06-15') // "in 6 months"
218
+ datevolt('2024-01-01').from('2024-06-15') // "6 months ago"
219
+ datevolt().add(5, 'minutes').toNow() // "in 5 minutes"
220
+ datevolt('2024-01-01').to('2024-06-15') // "in 6 months"
185
221
  ```
186
222
 
223
+ ---
224
+
187
225
  ### Calendar
188
226
 
189
227
  ```js
190
- datevolt().calendar() // "Today at 2:30 PM"
191
- datevolt().add(1,'day').calendar() // "Tomorrow at 2:30 PM"
192
- datevolt().subtract(1,'day').calendar() // "Yesterday at 2:30 PM"
193
- datevolt().add(3,'days').calendar() // "Tuesday at 2:30 PM"
194
- datevolt().subtract(7,'days').calendar() // "06/08/2024"
228
+ datevolt().calendar() // "Today at 2:30 PM"
229
+ datevolt().add(1, 'day').calendar() // "Tomorrow at 2:30 PM"
230
+ datevolt().subtract(1, 'day').calendar() // "Yesterday at 2:30 PM"
231
+ datevolt().add(3, 'days').calendar() // "Tuesday at 2:30 PM"
232
+ datevolt().subtract(7, 'days').calendar() // "06/08/2024"
195
233
  ```
196
234
 
235
+ ---
236
+
197
237
  ### Diff
198
238
 
199
239
  ```js
200
- datevolt('2024-06-15').diff('2024-01-01', 'days') // 166
201
- datevolt('2024-06-15').diff('2024-01-01', 'months') // 5
202
- datevolt('2024-06-15').diff('2020-01-01', 'years') // 4
240
+ datevolt('2024-06-15').diff('2024-01-01', 'days') // 166
241
+ datevolt('2024-06-15').diff('2024-01-01', 'months') // 5
242
+ datevolt('2024-06-15').diff('2020-01-01', 'years') // 4
203
243
  datevolt('2024-06-15T12:00').diff('2024-06-15T10:00', 'hours') // 2
204
- datevolt('2024-06-15').diff('2024-01-01', 'days', true) // 166.xxx (float)
244
+ datevolt('2024-06-15').diff('2024-01-01', 'days', true) // 166.xxx (float)
205
245
  ```
206
246
 
207
- ### Query / Comparison
247
+ ---
248
+
249
+ ### Query & Comparison
208
250
 
209
251
  ```js
210
- datevolt('2024-01-01').isBefore('2024-06-15') // true
211
- datevolt('2024-06-15').isAfter('2024-01-01') // true
212
- datevolt('2024-06-15T10:00').isSame('2024-06-15T18:00', 'day') // true
213
- datevolt('2024-01-01').isSameOrBefore('2024-01-01') // true
214
- datevolt('2024-06-15').isSameOrAfter('2024-06-15') // true
215
- datevolt('2024-03-15').isBetween('2024-01-01','2024-12-31') // true
216
- datevolt('2024-01-01').isBetween('2024-01-01','2024-12-31',null,'[]') // inclusive
217
-
218
- datevolt('2024-06-15').isLeapYear() // true
219
- datevolt().isDST() // true/false
220
- datevolt.isMoment(datevolt()) // true (also isdatevolt)
252
+ datevolt('2024-01-01').isBefore('2024-06-15') // true
253
+ datevolt('2024-06-15').isAfter('2024-01-01') // true
254
+ datevolt('2024-06-15T10:00').isSame('2024-06-15T18:00', 'day') // true
255
+ datevolt('2024-01-01').isSameOrBefore('2024-01-01') // true
256
+ datevolt('2024-06-15').isSameOrAfter('2024-06-15') // true
257
+ datevolt('2024-03-15').isBetween('2024-01-01', '2024-12-31') // true
258
+ datevolt('2024-01-01').isBetween('2024-01-01', '2024-12-31', null, '[]') // inclusive
259
+
260
+ datevolt('2024-06-15').isLeapYear() // true
261
+ datevolt().isDST() // true/false
262
+ datevolt.isMoment(datevolt()) // true
221
263
  datevolt.isDate(new Date()) // true
222
264
  ```
223
265
 
266
+ ---
267
+
224
268
  ### UTC & Timezone
225
269
 
226
270
  ```js
227
271
  // UTC mode
228
- datevolt.utc('2024-06-15T10:30:00').format('HH:mm') // always UTC hours
229
- datevolt.utc().isUTC() // true
230
- datevolt.utc().local() // switch to local mode
272
+ datevolt.utc('2024-06-15T10:30:00').format('HH:mm') // always UTC hours
273
+ datevolt.utc().isUTC() // true
274
+ datevolt.utc().local() // switch back to local
231
275
 
232
276
  // UTC offset
233
- datevolt().utcOffset() // current offset in minutes
234
- datevolt().utcOffset('+05:30') // set offset
235
- datevolt().utcOffset(330) // set by minutes
236
- datevolt().utcOffset(0, true) // keep local time, change offset
277
+ datevolt().utcOffset() // offset in minutes
278
+ datevolt().utcOffset('+05:30') // set by string
279
+ datevolt().utcOffset(330) // set by minutes
280
+ datevolt().utcOffset(0, true) // keep local time, change offset
237
281
  ```
238
282
 
283
+ ---
284
+
239
285
  ### Duration
240
286
 
241
287
  ```js
242
- var d = datevolt.duration(2, 'days');
288
+ const d = datevolt.duration(2, 'days');
243
289
  d.asDays() // 2
244
290
  d.asHours() // 48
245
291
  d.asMinutes() // 2880
246
292
 
247
- datevolt.duration({ hours: 1, minutes: 30 }).asMinutes() // 90
248
- datevolt.duration('P1Y2M3DT4H5M6S') // ISO 8601 duration string
249
- datevolt.duration(1,'day').humanize() // "a day"
250
- datevolt.duration(1,'day').humanize(true) // "in a day"
293
+ datevolt.duration({ hours: 1, minutes: 30 }).asMinutes() // 90
294
+ datevolt.duration('P1Y2M3DT4H5M6S') // ISO 8601 duration
295
+
296
+ datevolt.duration(1, 'day').humanize() // "a day"
297
+ datevolt.duration(1, 'day').humanize(true) // "in a day"
251
298
 
252
299
  d.years() / d.months() / d.days() / d.hours() / d.minutes() / d.seconds()
253
300
  d.add(1, 'hour').subtract(30, 'minutes')
254
301
  d.clone()
255
- d.toISOString() // "P2D"
302
+ d.toISOString() // "P2D"
256
303
 
257
- // Add duration to date
258
- datevolt().add(datevolt.duration(2,'hours'))
304
+ // Pass duration directly into add()
305
+ datevolt().add(datevolt.duration(2, 'hours'))
259
306
 
260
- datevolt.isDuration(d) // true
307
+ datevolt.isDuration(d) // true
261
308
  ```
262
309
 
310
+ ---
311
+
263
312
  ### Locale (i18n)
264
313
 
314
+ 7 built-in locales: `en`, `hi`, `es`, `fr`, `de`, `ar`, `ja`
315
+
265
316
  ```js
266
317
  // Set global locale
267
- datevolt.locale('hi'); // Hindi
268
- datevolt().format('MMMM D, YYYY'); // "जून 15, 2024"
318
+ datevolt.locale('hi');
319
+ datevolt().format('MMMM D, YYYY'); // "जून 15, 2024"
269
320
 
270
321
  // Per-instance locale
271
- datevolt().locale('es').format('MMMM'); // "junio"
322
+ datevolt().locale('es').format('MMMM'); // "junio"
272
323
 
273
- // Built-in locales
274
- datevolt.locales(); // ['en','hi','es','fr','de','ar','ja']
324
+ // List all available
325
+ datevolt.locales(); // ['en', 'hi', 'es', 'fr', 'de', 'ar', 'ja']
275
326
 
276
- // Define custom locale
327
+ // Define a custom locale
277
328
  datevolt.defineLocale('mr', {
278
329
  name: 'mr',
279
- months: ['जानेवारी','फेब्रुवारी','मार्च',...],
330
+ months: ['जानेवारी', 'फेब्रुवारी', 'मार्च', ...],
280
331
  // ...
281
332
  });
282
333
 
283
- // Get locale data
334
+ // Access locale data
284
335
  datevolt.localeData('en').months
285
336
  datevolt().localeData()
286
337
  ```
287
338
 
339
+ ---
340
+
288
341
  ### Static Methods
289
342
 
290
343
  ```js
291
- datevolt.max(a, b, c) // returns latest datevolt
292
- datevolt.min(a, b, c) // returns earliest datevolt
293
- datevolt.invalid() // returns an invalid datevolt
344
+ datevolt.max(a, b, c) // returns the latest date
345
+ datevolt.min(a, b, c) // returns the earliest date
346
+ datevolt.invalid() // returns an invalid datevolt instance
294
347
  datevolt.normalizeUnits('y') // 'year'
295
- datevolt.version // '1.0.0'
296
- datevolt.fn // datevolt.prototype (for plugins)
348
+ datevolt.version // '1.0.1'
349
+ datevolt.fn // prototype — use for plugins
297
350
  ```
298
351
 
299
352
  ---
300
353
 
301
- ## React Native Usage
354
+ ## Familiar API
302
355
 
303
- Works directly with React Native CLI (Hermes and JSC). No special configuration needed:
304
-
305
- ```bash
306
- npm install datevolt
307
- ```
356
+ If you've used any chainable date library before, datevolt will feel right at home. The API follows widely adopted conventions in the JavaScript date ecosystem — parse, format, add, subtract, diff, fromNow, and more — all chainable and consistent.
308
357
 
309
358
  ```js
310
- // In your component
311
- import datevolt from 'datevolt'; // ESM syntax works too with Metro
312
- // or
313
- const datevolt = require('datevolt');
314
-
315
- const DateDisplay = () => {
316
- const [display, setDisplay] = React.useState(datevolt().format('LL'));
317
- return <Text>{display}</Text>;
318
- };
359
+ // Switching from another date library? It's usually just a one-line change:
360
+ // const datevolt = require('datevolt');
361
+ // Then use it the same way you always have.
319
362
  ```
320
363
 
321
364
  ---
322
365
 
323
- ## Why datevolt over moment?
324
-
325
- | Feature | moment | datevolt |
326
- |---------|--------|--------|
327
- | Size (minified) | ~290 KB | ~25 KB |
328
- | Size (gzipped) | ~72 KB | ~8 KB |
329
- | Dependencies | 0 | 0 |
330
- | Tree-shakeable | ❌ | ✅ |
331
- | Immutable option | ❌ | ✅ `.clone()` |
332
- | React Native safe | ⚠️ | ✅ |
333
- | API compatible | ✅ | ✅ |
334
-
335
- ---
336
-
337
366
  ## License
338
367
 
339
- MIT
368
+ MIT © [shaikh-saqlain](https://github.com/shaikh-saqlain)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datevolt",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "A complete, lightweight, zero-dependency date library with a moment.js-compatible API. Built for React Native CLI (Android & iOS), Node.js, and browsers.",
5
5
  "main": "src/index.js",
6
6
  "react-native": "src/index.js",