{"_id":"@bw-ui/datepicker-date-utils","_rev":"5-604f8bd873b2620a27c0a37711c67118","name":"@bw-ui/datepicker-date-utils","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@bw-ui/datepicker-date-utils","version":"1.0.0","license":"MIT","_id":"@bw-ui/datepicker-date-utils@1.0.0","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"dist":{"shasum":"458fff881966c357d717c16164c0c4fe3cc6fe81","tarball":"https://registry.npmjs.org/@bw-ui/datepicker-date-utils/-/datepicker-date-utils-1.0.0.tgz","fileCount":13,"integrity":"sha512-D3gQu89OuCCJTPDz+FwueykoAX7vVGRJ295P9QUMjNWc+/1hicgZcjWBmsMvk5dMAF/+oZIn383e2F0zw+okYg==","signatures":[{"sig":"MEQCIGkXxBKnxLQpTHbVU7bSrRsk67tm7xSiMFEM9/QGyRRBAiByqRKkW/GOh6WR4iy5WqKnygdOVmSo28oIHeXWSZemCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254331},"main":"dist/bw-date-utils.min.js","type":"module","module":"dist/bw-date-utils.esm.min.js","exports":{".":{"import":"./dist/bw-date-utils.esm.min.js","require":"./dist/bw-date-utils.min.js"}},"gitHead":"33b7c525d2e2f752ae803ca16fd2dedde2098824","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"_npmVersion":"10.9.3","description":"Date utilities plugin - Advanced parsing, formatting, calculations","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"peerDependencies":{"@bw-ui/datepicker":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker-date-utils_1.0.0_1764344591536_0.2155750058221666","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bw-ui/datepicker-date-utils","version":"1.0.1","license":"MIT","_id":"@bw-ui/datepicker-date-utils@1.0.1","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"dist":{"shasum":"d7822c9e67286bebedd45c7933732e04868447ee","tarball":"https://registry.npmjs.org/@bw-ui/datepicker-date-utils/-/datepicker-date-utils-1.0.1.tgz","fileCount":3,"integrity":"sha512-LViFsQ15aKPjbzys43VAr0Ln7fl4y5loiJE6DmkWLEuWNIH3Q+pwXOw6bKbMa11lH3KTMWfmnwzaxEYiyUsafg==","signatures":[{"sig":"MEYCIQCfKIlV7cBiABV5xgfwojixzoJuEDCwIdNz1vlytAaDrAIhANWNJ36GTaYgIl7hO7ZMcC5RPVwkJTamPV10UHjRmjDq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39175},"main":"dist/bw-date-utils.min.js","type":"module","module":"dist/bw-date-utils.esm.min.js","exports":{".":{"import":"./dist/bw-date-utils.esm.min.js","require":"./dist/bw-date-utils.min.js"}},"gitHead":"c10a0a9d099b359edb1ee36da7f8d22c9703d643","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"_npmVersion":"10.9.3","description":"Date utilities plugin - Advanced parsing, formatting, calculations","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"peerDependencies":{"@bw-ui/datepicker":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker-date-utils_1.0.1_1764346722465_0.3907325589753132","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bw-ui/datepicker-date-utils","version":"1.0.2","license":"MIT","_id":"@bw-ui/datepicker-date-utils@1.0.2","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"dist":{"shasum":"c996bfb7e33a74c82d88ceaea2cb2ff4e24f0f0b","tarball":"https://registry.npmjs.org/@bw-ui/datepicker-date-utils/-/datepicker-date-utils-1.0.2.tgz","fileCount":4,"integrity":"sha512-45eZAO01mFuhhd5HgIoqFvRK1y0iM9mXdND+55Dl5Ku1OHE7rQb2uZ6WQZJ+O1lsT9mHajy0ApmiEQEa2NB1TA==","signatures":[{"sig":"MEYCIQDwbucZh7YbnPengh0tN0+BEYiSkRNIdNVYGpGC4JdaEAIhAK8FzYRkV4vTXb2aPbaMHT4JKT4dHjBslWnb8msvNdZu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48688},"main":"dist/bw-date-utils.min.js","type":"module","types":"src/index.d.ts","module":"dist/bw-date-utils.esm.min.js","exports":{".":{"import":"./dist/bw-date-utils.esm.min.js","require":"./dist/bw-date-utils.min.js"}},"gitHead":"40090008e522bc7c32a5f9b9da198c7954d2874d","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"_npmVersion":"10.9.3","description":"Date utilities plugin - Advanced parsing, formatting, calculations","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"peerDependencies":{"@bw-ui/datepicker":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker-date-utils_1.0.2_1764417742701_0.06609831283214129","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bw-ui/datepicker-date-utils","version":"1.0.3","license":"MIT","_id":"@bw-ui/datepicker-date-utils@1.0.3","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"3b9c7ce109df68854e63e820e4420c7269364eee","tarball":"https://registry.npmjs.org/@bw-ui/datepicker-date-utils/-/datepicker-date-utils-1.0.3.tgz","fileCount":4,"integrity":"sha512-MuTqd/Y6djG6fa40Y5A8qUeTfdgmlfE8q3sauR9DDbTRerLDgPWyHJcveMWk28a/trUo7ag5C9VYdsifq0I2pA==","signatures":[{"sig":"MEUCIGzKRRCOM3RMZY4x+IQ1jXz+6aJd7G309diqlzTwQbYoAiEA6keRankaiBh0/phFwV5HOnrpteLIyMvgYAS4RiQE+Hg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48914},"main":"dist/bw-date-utils.min.js","type":"module","types":"src/index.d.ts","module":"dist/bw-date-utils.esm.min.js","exports":{".":{"import":"./dist/bw-date-utils.esm.min.js","require":"./dist/bw-date-utils.min.js"}},"gitHead":"40090008e522bc7c32a5f9b9da198c7954d2874d","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Date utilities plugin - Advanced parsing, formatting, calculations","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"peerDependencies":{"@bw-ui/datepicker":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker-date-utils_1.0.3_1764418322981_0.26621410816684743","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@bw-ui/datepicker-date-utils","version":"1.1.3","description":"Date utilities plugin - Advanced parsing, formatting, calculations","main":"dist/bw-date-utils.min.js","module":"dist/bw-date-utils.esm.min.js","exports":{".":{"import":"./dist/bw-date-utils.esm.min.js","require":"./dist/bw-date-utils.min.js"}},"types":"src/index.d.ts","scripts":{"build":"node build.js"},"peerDependencies":{"@bw-ui/datepicker":"^1.0.0"},"devDependencies":{"esbuild":"^0.20.0"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bw-ui/bw-datepicker.git"},"bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"homepage":"https://github.com/bw-ui/bw-datepicker","type":"module","_id":"@bw-ui/datepicker-date-utils@1.1.3","gitHead":"30d8915a21fd5e442ea3830e44532446a20dfa3c","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-Cs5WVbGGB8ljkGkx227pnHDPnhQRMCw6p+d8MuaJTfU+s8AsVhnnN0xeceylRmiA0bOHtB3/6jw0BugPIie5Sg==","shasum":"170bb3749298e3195147cab563c1a2f93ae0d41b","tarball":"https://registry.npmjs.org/@bw-ui/datepicker-date-utils/-/datepicker-date-utils-1.1.3.tgz","fileCount":4,"unpackedSize":48914,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDihm7aOqGJRRAozQRY9r57cK+4Wi3oX1fYESkM34RzawIgLZLjXcwWDflvsiwBakeKdYu3zVI92iFcd9Z3FzKtpTM="}]},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"directories":{},"maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datepicker-date-utils_1.1.3_1764510868009_0.0024183436640032863"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T15:43:11.398Z","modified":"2025-11-30T13:54:28.391Z","1.0.0":"2025-11-28T15:43:11.765Z","1.0.1":"2025-11-28T16:18:42.645Z","1.0.2":"2025-11-29T12:02:22.890Z","1.0.3":"2025-11-29T12:12:03.159Z","1.1.3":"2025-11-30T13:54:28.201Z"},"bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"license":"MIT","homepage":"https://github.com/bw-ui/bw-datepicker","repository":{"type":"git","url":"git+https://github.com/bw-ui/bw-datepicker.git"},"description":"Date utilities plugin - Advanced parsing, formatting, calculations","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"readme":"# @bw-ui/datepicker-date-utils\r\n\r\nDate utilities plugin for BW DatePicker - Parsing, formatting, validation, and date manipulation.\r\n\r\n![Version](https://img.shields.io/npm/v/@bw-ui/datepicker-date-utils)\r\n![License](https://img.shields.io/npm/l/@bw-ui/datepicker-date-utils)\r\n![Size](https://img.shields.io/bundlephobia/minzip/@bw-ui/datepicker-date-utils)\r\n\r\n[Live Demo](https://bw-ui.github.io/bw-datepicker) • [Documentation](https://www.npmjs.com/package/@bw-ui/datepicker-date-utils) • [Core Package](https://www.npmjs.com/package/@bw-ui/datepicker)\r\n\r\n## ✨ Features\r\n\r\n- 📅 **Date Parsing** - Parse various date formats\r\n- 🔄 **Date Formatting** - Format dates to strings\r\n- ✅ **Validation** - Validate date inputs\r\n- ➕ **Manipulation** - Add/subtract days, months, years\r\n- 📊 **Comparison** - Compare dates easily\r\n- 📆 **Calendar Generation** - Generate month grids\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install @bw-ui/datepicker @bw-ui/datepicker-date-utils\r\n```\r\n\r\n> ⚠️ **Peer Dependency:** Requires `@bw-ui/datepicker` core package\r\n\r\n## 🚀 Quick Start\r\n\r\n### ES Modules\r\n\r\n```javascript\r\nimport { BWDatePicker } from '@bw-ui/datepicker';\r\nimport { DateUtilsPlugin } from '@bw-ui/datepicker-date-utils';\r\n\r\nconst picker = new BWDatePicker('#date-input', {\r\n  mode: 'popup',\r\n}).use(DateUtilsPlugin);\r\n\r\n// Access utilities\r\nconst utils = picker.getPlugin('date-utils');\r\nconst formatted = utils.formatter.formatDate(new Date(), 'DD/MM/YYYY');\r\n```\r\n\r\n### CDN\r\n\r\n```html\r\n<link\r\n  rel=\"stylesheet\"\r\n  href=\"https://unpkg.com/@bw-ui/datepicker/dist/bw-datepicker.min.css\"\r\n/>\r\n\r\n<script src=\"https://unpkg.com/@bw-ui/datepicker/dist/bw-datepicker.min.js\"></script>\r\n<script src=\"https://unpkg.com/@bw-ui/datepicker-date-utils/dist/bw-date-utils.min.js\"></script>\r\n\r\n<script>\r\n  const picker = new BW.BWDatePicker('#date-input').use(\r\n    BWDateUtils.DateUtilsPlugin\r\n  );\r\n\r\n  const utils = picker.getPlugin('date-utils');\r\n</script>\r\n```\r\n\r\n## 📖 Usage\r\n\r\n```javascript\r\nconst utils = picker.getPlugin('date-utils');\r\n\r\n// Access modules\r\nutils.formatter; // Formatting functions\r\nutils.parser; // Parsing functions\r\nutils.validator; // Validation functions\r\nutils.calculator; // Date math functions\r\nutils.comparator; // Comparison functions\r\nutils.generator; // Calendar generation\r\n```\r\n\r\n## 🔄 Formatter\r\n\r\n```javascript\r\nconst { formatter } = picker.getPlugin('date-utils');\r\n\r\n// Format with tokens\r\nformatter.formatDate(new Date(), 'DD/MM/YYYY'); // \"25/12/2025\"\r\nformatter.formatDate(new Date(), 'YYYY-MM-DD'); // \"2025-12-25\"\r\nformatter.formatDate(new Date(), 'MMMM D, YYYY'); // \"December 25, 2025\"\r\n\r\n// Preset formats\r\nformatter.toISO(new Date()); // \"2025-12-25\"\r\nformatter.toUS(new Date()); // \"12/25/2025\"\r\nformatter.toEU(new Date()); // \"25/12/2025\"\r\nformatter.toLong(new Date()); // \"December 25, 2025\"\r\nformatter.toShort(new Date()); // \"Dec 25, 2025\"\r\nformatter.toRelative(new Date()); // \"Today\"\r\nformatter.toOrdinal(new Date()); // \"December 25th, 2025\"\r\n\r\n// Date range\r\nformatter.toRange(startDate, endDate); // \"Dec 25 - 31, 2025\"\r\n```\r\n\r\n### Format Tokens\r\n\r\n| Token  | Output     | Description      |\r\n| ------ | ---------- | ---------------- |\r\n| `YYYY` | `2025`     | 4-digit year     |\r\n| `YY`   | `25`       | 2-digit year     |\r\n| `MMMM` | `December` | Full month name  |\r\n| `MMM`  | `Dec`      | Short month name |\r\n| `MM`   | `12`       | 2-digit month    |\r\n| `M`    | `12`       | Month number     |\r\n| `DD`   | `25`       | 2-digit day      |\r\n| `D`    | `25`       | Day number       |\r\n| `dddd` | `Thursday` | Full day name    |\r\n| `ddd`  | `Thu`      | Short day name   |\r\n| `HH`   | `14`       | 2-digit hours    |\r\n| `mm`   | `30`       | 2-digit minutes  |\r\n| `ss`   | `45`       | 2-digit seconds  |\r\n\r\n## 📝 Parser\r\n\r\n```javascript\r\nconst { parser } = picker.getPlugin('date-utils');\r\n\r\n// Smart parse various formats\r\nparser.smartParse('25/12/2025'); // Date object\r\nparser.smartParse('2025-12-25'); // Date object\r\nparser.smartParse('December 25, 2025'); // Date object\r\n```\r\n\r\n## ✅ Validator\r\n\r\n```javascript\r\nconst { validator } = picker.getPlugin('date-utils');\r\n\r\n// Validate dates\r\nvalidator.isValidDate(new Date()); // true\r\nvalidator.isValidDate('invalid'); // false\r\nvalidator.isValidDate(new Date('invalid')); // false\r\n```\r\n\r\n## ➕ Calculator\r\n\r\n```javascript\r\nconst { calculator } = picker.getPlugin('date-utils');\r\nconst today = new Date();\r\n\r\n// Add time\r\ncalculator.addDays(today, 5); // Date + 5 days\r\ncalculator.addWeeks(today, 2); // Date + 2 weeks\r\ncalculator.addMonths(today, 3); // Date + 3 months\r\ncalculator.addYears(today, 1); // Date + 1 year\r\n\r\n// Subtract time\r\ncalculator.subtractDays(today, 5); // Date - 5 days\r\ncalculator.subtractMonths(today, 2); // Date - 2 months\r\ncalculator.subtractYears(today, 1); // Date - 1 year\r\n\r\n// Get boundaries\r\ncalculator.startOfDay(today); // 00:00:00.000\r\ncalculator.endOfDay(today); // 23:59:59.999\r\ncalculator.startOfMonth(today); // First day of month\r\ncalculator.endOfMonth(today); // Last day of month\r\ncalculator.startOfYear(today); // Jan 1\r\ncalculator.endOfYear(today); // Dec 31\r\ncalculator.startOfWeek(today); // Sunday (or Monday with param)\r\ncalculator.endOfWeek(today); // Saturday\r\n\r\n// Get info\r\ncalculator.getDaysInMonth(today); // 28-31\r\ncalculator.getDaysInYear(today); // 365 or 366\r\ncalculator.isLeapYear(2024); // true\r\n\r\n// Calculate differences\r\ncalculator.diffInDays(date1, date2); // Number of days\r\ncalculator.diffInWeeks(date1, date2); // Number of weeks\r\ncalculator.diffInMonths(date1, date2); // Number of months\r\ncalculator.diffInYears(date1, date2); // Number of years\r\n```\r\n\r\n## 📊 Comparator\r\n\r\n```javascript\r\nconst { comparator } = picker.getPlugin('date-utils');\r\n\r\n// Same checks\r\ncomparator.isSameDay(date1, date2); // true/false\r\ncomparator.isSameMonth(date1, date2); // true/false\r\ncomparator.isSameYear(date1, date2); // true/false\r\ncomparator.isSameWeek(date1, date2); // true/false\r\n\r\n// Order checks\r\ncomparator.isBefore(date1, date2); // true/false\r\ncomparator.isAfter(date1, date2); // true/false\r\ncomparator.isBetween(date, start, end); // true/false\r\n\r\n// Compare\r\ncomparator.compare(date1, date2); // -1, 0, or 1\r\n\r\n// Array operations\r\ncomparator.min([date1, date2, date3]); // Earliest date\r\ncomparator.max([date1, date2, date3]); // Latest date\r\ncomparator.sort([date1, date2, date3]); // Sorted array\r\ncomparator.closest(target, dates); // Nearest date to target\r\n```\r\n\r\n## 📆 Generator\r\n\r\n```javascript\r\nconst { generator } = picker.getPlugin('date-utils');\r\n\r\n// Generate calendar month grid\r\ngenerator.generateMonth(2025, 11); // December 2025\r\n// Returns array of weeks, each containing 7 dates\r\n```\r\n\r\n## 📖 Examples\r\n\r\n### Calculate Age\r\n\r\n```javascript\r\nconst { calculator } = picker.getPlugin('date-utils');\r\nconst birthDate = new Date('1990-06-15');\r\nconst today = new Date();\r\n\r\nconst age = calculator.diffInYears(birthDate, today);\r\nconsole.log(`Age: ${age} years`);\r\n```\r\n\r\n### Format Date Range\r\n\r\n```javascript\r\nconst { formatter } = picker.getPlugin('date-utils');\r\nconst start = new Date('2025-12-25');\r\nconst end = new Date('2025-12-31');\r\n\r\nconsole.log(formatter.toRange(start, end));\r\n// \"Dec 25 - 31, 2025\"\r\n```\r\n\r\n### Get Next Business Day\r\n\r\n```javascript\r\nconst { calculator, comparator } = picker.getPlugin('date-utils');\r\n\r\nfunction nextBusinessDay(date) {\r\n  let next = calculator.addDays(date, 1);\r\n  while (next.getDay() === 0 || next.getDay() === 6) {\r\n    next = calculator.addDays(next, 1);\r\n  }\r\n  return next;\r\n}\r\n```\r\n\r\n### Check if Date is Weekend\r\n\r\n```javascript\r\nconst { calculator } = picker.getPlugin('date-utils');\r\n\r\nfunction isWeekend(date) {\r\n  const day = date.getDay();\r\n  return day === 0 || day === 6;\r\n}\r\n```\r\n\r\n## 🔌 Combining with Other Plugins\r\n\r\n```javascript\r\nimport { BWDatePicker } from '@bw-ui/datepicker';\r\nimport { ThemingPlugin } from '@bw-ui/datepicker-theming';\r\nimport { DateUtilsPlugin } from '@bw-ui/datepicker-date-utils';\r\n\r\nconst picker = new BWDatePicker('#date-input')\r\n  .use(ThemingPlugin, { theme: 'dark' })\r\n  .use(DateUtilsPlugin);\r\n```\r\n\r\n## 📁 What's Included\r\n\r\n```\r\ndist/\r\n├── bw-date-utils.min.js      # IIFE build (for <script>)\r\n└── bw-date-utils.esm.min.js  # ESM build (for import)\r\n```\r\n\r\n## 🔗 Related Packages\r\n\r\n| Package                                                                                          | Description      |\r\n| ------------------------------------------------------------------------------------------------ | ---------------- |\r\n| [@bw-ui/datepicker](https://www.npmjs.com/package/@bw-ui/datepicker)                             | Core (required)  |\r\n| [@bw-ui/datepicker-theming](https://www.npmjs.com/package/@bw-ui/datepicker-theming)             | Dark mode        |\r\n| [@bw-ui/datepicker-accessibility](https://www.npmjs.com/package/@bw-ui/datepicker-accessibility) | Keyboard nav     |\r\n| [@bw-ui/datepicker-positioning](https://www.npmjs.com/package/@bw-ui/datepicker-positioning)     | Auto-positioning |\r\n| [@bw-ui/datepicker-mobile](https://www.npmjs.com/package/@bw-ui/datepicker-mobile)               | Touch support    |\r\n| [@bw-ui/datepicker-input-handler](https://www.npmjs.com/package/@bw-ui/datepicker-input-handler) | Input masking    |\r\n\r\n## 📄 License\r\n\r\nMIT © [BW UI](https://github.com/bw-ui)\r\n\r\n## 🐛 Issues\r\n\r\nFound a bug? [Report it here](https://github.com/bw-ui/bw-datepicker/issues)\r\n","readmeFilename":"README.md"}