@mangcoding/day-calculator
Version:
Simple Project to calculate day
296 lines (198 loc) • 9.1 kB
Markdown
# @mangcoding/day-calculator
[](https://www.npmjs.com/package/@mangcoding/day-calculator)
[](https://www.npmjs.com/package/@mangcoding/day-calculator)
[](https://opensource.org/licenses/ISC)
A simple and powerful JavaScript library for calculating date differences in various units (years, months, days, hours, minutes, seconds), getting day names in different locales, and calculating future/past dates. Built with Moment.js for reliable date handling.
## 🚀 Installation
```bash
npm install @mangcoding/day-calculator
```
## ✨ Features
- 📅 **Date Difference Calculations** - Calculate differences in years, months, days, hours, minutes, and seconds
- 🌍 **Multi-language Support** - Get day names in different locales (English, Indonesian, Spanish, etc.)
- ⏰ **Future/Past Date Calculations** - Easily calculate future and past dates
- 🎯 **Age Calculation** - Get detailed age breakdown including years, months, and days
- 🔧 **Flexible Date Formats** - Support for various date input formats
- 📦 **Lightweight** - Built with Moment.js for reliable date handling
## 📖 Usage
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Calculate comprehensive difference
const result = dayCalculator.difference('2023-01-01', '2024-12-31');
console.log(result);
// Output: { year: 1, month: 11, day: 364, hour: 8736, minute: 524160, second: 31449600 }
// Calculate specific differences
console.log(dayCalculator.differenceInYears('2023-01-01', '2024-12-31')); // 1
console.log(dayCalculator.differenceInMonths('2023-01-01', '2024-12-31')); // 23
console.log(dayCalculator.differenceInDays('2023-01-01', '2024-12-31')); // 729
console.log(dayCalculator.differenceInHours('2023-01-01', '2024-12-31')); // 17520
console.log(dayCalculator.differenceInMinutes('2023-01-01', '2024-12-31')); // 1051200
console.log(dayCalculator.differenceInSeconds('2023-01-01', '2024-12-31')); // 63072000
// Calculate age with detailed breakdown
const age = dayCalculator.yourAgeIncludingMonthsAndDays('1989-09-13', new Date());
console.log(age); // "34 years 3 months 15 days"
// Get day name in different locales
console.log(dayCalculator.daysName('1989-09-13', 'en')); // "Wednesday"
console.log(dayCalculator.daysName('1989-09-13', 'id')); // "Rabu"
// Calculate future and past dates
console.log(dayCalculator.futureDate(new Date(), 10)); // "2024-01-15" (10 days from now)
console.log(dayCalculator.pastDate(new Date(), 30)); // "2023-12-16" (30 days ago)
```
## 📚 API Reference
### `difference(startDate, endDate)`
Returns a comprehensive object containing the difference in all time units.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Object with properties: `year`, `month`, `day`, `hour`, `minute`, `second`
### `differenceInYears(startDate, endDate)`
Calculates the difference in years.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of years
### `differenceInMonths(startDate, endDate)`
Calculates the difference in months.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of months
### `differenceInDays(startDate, endDate)`
Calculates the difference in days.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of days
### `differenceInHours(startDate, endDate)`
Calculates the difference in hours.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of hours
### `differenceInMinutes(startDate, endDate)`
Calculates the difference in minutes.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of minutes
### `differenceInSeconds(startDate, endDate)`
Calculates the difference in seconds.
**Parameters:**
- `startDate` (string|Date): The start date
- `endDate` (string|Date): The end date
**Returns:** Number of seconds
### `yourAgeIncludingMonthsAndDays(startDate, endDate)`
Calculates age with detailed breakdown including years, months, and days.
**Parameters:**
- `startDate` (string|Date): The birth date
- `endDate` (string|Date): The current date
**Returns:** String in format "X years Y months Z days"
### `daysName(date, locale)`
Gets the day name of the week for a given date in the specified locale.
**Parameters:**
- `date` (string|Date): The date to get the day name for
- `locale` (string): The locale code (e.g., 'en', 'id', 'es'). Defaults to 'en'
**Returns:** String with the day name in the specified locale
### `futureDate(startDate, days, format)`
Calculates a future date by adding the specified number of days.
**Parameters:**
- `startDate` (string|Date): The starting date
- `days` (number): Number of days to add
- `format` (string): Date format. Defaults to 'YYYY-MM-DD'
**Returns:** String with the future date in the specified format
### `pastDate(startDate, days, format)`
Calculates a past date by subtracting the specified number of days.
**Parameters:**
- `startDate` (string|Date): The starting date
- `days` (number): Number of days to subtract
- `format` (string): Date format. Defaults to 'YYYY-MM-DD'
**Returns:** String with the past date in the specified format
## 🎯 Examples
### Basic Usage
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Calculate time since a specific date
const startDate = '2020-01-01';
const endDate = new Date();
const timeDiff = dayCalculator.difference(startDate, endDate);
console.log(`Time passed: ${timeDiff.year} years, ${timeDiff.month} months, ${timeDiff.day} days`);
```
### Age Calculation
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Calculate someone's age
const birthDate = '1990-05-15';
const currentDate = new Date();
const age = dayCalculator.yourAgeIncludingMonthsAndDays(birthDate, currentDate);
console.log(`Age: ${age}`);
```
### Project Duration
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Calculate project duration
const projectStart = '2023-06-01';
const projectEnd = '2024-03-15';
const duration = dayCalculator.differenceInDays(projectStart, projectEnd);
console.log(`Project duration: ${duration} days`);
```
### Day Name and Locale Support
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Get day names in different languages
const date = '2024-01-01';
console.log(dayCalculator.daysName(date, 'en')); // "Monday"
console.log(dayCalculator.daysName(date, 'id')); // "Senin"
console.log(dayCalculator.daysName(date, 'es')); // "lunes"
```
### Future and Past Date Calculations
```javascript
const dayCalculator = require('@mangcoding/day-calculator');
// Calculate future dates
const today = new Date();
const nextWeek = dayCalculator.futureDate(today, 7);
const nextMonth = dayCalculator.futureDate(today, 30);
console.log(`Next week: ${nextWeek}`);
console.log(`Next month: ${nextMonth}`);
// Calculate past dates
const lastWeek = dayCalculator.pastDate(today, 7);
const lastMonth = dayCalculator.pastDate(today, 30);
console.log(`Last week: ${lastWeek}`);
console.log(`Last month: ${lastMonth}`);
// Custom format
const customFuture = dayCalculator.futureDate(today, 10, 'DD/MM/YYYY');
console.log(`Custom format: ${customFuture}`);
```
## 🛠️ Development
### Running Tests
```bash
npm test
```
### Dependencies
- [Moment.js](https://momentjs.com/) - For reliable date manipulation
## 📄 License
ISC License - see [LICENSE](LICENSE) file for details.
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## 📞 Support
If you have any questions or issues, please:
1. Check the [Issues](https://github.com/mangcoding/day-calculator/issues) page
2. Create a new issue if your problem isn't already reported
3. Contact the maintainer
## 📋 Changelog
### Version 1.0.2
- ✨ Added `daysName()` function for getting day names in different locales
- ✨ Added `futureDate()` function for calculating future dates
- ✨ Added `pastDate()` function for calculating past dates
- 🔧 Enhanced main module exports to include new functions
- 📚 Updated documentation with new API reference and examples
### Version 1.0.0
- 🎉 Initial release
- 📅 Date difference calculations in multiple units
- 🎯 Age calculation with detailed breakdown
- 🌍 Multi-language day name support
## 🔗 Links
- [NPM Package](https://www.npmjs.com/package/@mangcoding/day-calculator)
- [GitHub Repository](https://github.com/mangcoding/day-calculator)
- [Report Bug](https://github.com/mangcoding/day-calculator/issues)
---
Made with ❤️ by [Nugraha](https://github.com/mangcoding)