https://github.com/fmotalleb/jalali_date_time_dart
Jalali DateTime implementation in dartlang identical to dart's DateTime public api
https://github.com/fmotalleb/jalali_date_time_dart
calendar dart date datetime flutter jalali jalali-date jalali-datetime
Last synced: about 14 hours ago
JSON representation
Jalali DateTime implementation in dartlang identical to dart's DateTime public api
- Host: GitHub
- URL: https://github.com/fmotalleb/jalali_date_time_dart
- Owner: FMotalleb
- License: mit
- Created: 2023-09-17T10:59:04.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-26T05:56:59.000Z (almost 2 years ago)
- Last Synced: 2025-04-06T22:29:04.679Z (6 months ago)
- Topics: calendar, dart, date, datetime, flutter, jalali, jalali-date, jalali-datetime
- Language: Dart
- Homepage:
- Size: 106 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# JalaliDateTime
[](https://github.com/FMotalleb/jalali_date_time_dart/actions/workflows/publish.yml)
[](https://github.com/FMotalleb/jalali_date_time_dart/actions/workflows/tests.yml)
[](https://codecov.io/gh/FMotalleb/jalali_date_time_dart)JalaliDateTime is a Dart package that provides a convenient way to work with Jalali (Persian) dates while using the underlying DateTime structure for time-related methods. This approach is designed to maintain stability and efficiency in your code.
## Features
* **Jalali Date Representation**: The package allows you to easily represent Jalali dates, including year, month, and day.
* **DateTime Compatibility**: Public apis for `JalaliDateTime` is almost identical to `DateTime`.
* **Persian DateTime Format**: Includes a built-in `PersianDateTimeFormat` almost identical to `DateTimeFormat` provided by `Intl`. You can find more information about the `intl` package [here](https://pub.dev/packages/intl).
* **Efficient Design**: Each Jalali instance seamlessly holds its corresponding DateTime, minimizing overhead and computational load.
* **Stability**: For time-related or computation methods such as comparison, subtraction, and more, JalaliDateTime utilizes the DateTime methods, ensuring reliability and accuracy.
* **Super Lightweight**: This package maintains a small footprint by relying on just two dependencies: intl and meta.
## Installation
To use JalaliDateTime in your Dart project, add it as a dependency in your `pubspec.yaml` file:
```yaml
dependencies:
jalali_date_time:
```Then, run `flutter pub get` to fetch the package.
## Usage
Here's a basic example of how to use JalaliDateTime:
```dart
import 'package:jalali_date_time/jalali_date_time.dart';void main() {
// Create a JalaliDateTime instance for the current date and time
final jalaliNow = JalaliDateTime.now();// Access Jalali components
final year = jalaliNow.year;
final month = jalaliNow.month;
final day = jalaliNow.day;
print('today: $year-$month-$day'); // today: 1402-6-27
// Convert JalaliDateTime to DateTime
final dateTime = jalaliNow.getDateTime();// Perform DateTime operations
final tomorrow = dateTime.add(const Duration(days: 1));// Convert DateTime back to JalaliDateTime
final jalaliTomorrow = JalaliDateTime.fromDateTime(tomorrow);
print(jalaliTomorrow == tomorrow.toJalali()); // true
final tyear = jalaliTomorrow.year;
final tmonth = jalaliTomorrow.month;
final tday = jalaliTomorrow.day;
print('tomorrow: $tyear-$tmonth-$tday'); // tomorrow: 1402-6-28
// Compare JalaliDateTime objects
if (jalaliTomorrow.isAfter(jalaliNow)) {
print('Tomorrow is after today.'); // Tomorrow is after today.
}
print(DateTime(1986, 4, 26, 01, 23, 40).toJalali()); // 1365-02-06 01:23:40 +0330print(PersianDateTimeFormat.yMMMMEEEEd().format(jalaliTomorrow)); // سهشنبه, 1402-شهریور-28 (correct in rtl form)
print(jalaliTomorrow.toFormat('yMMMMEEEEd') == PersianDateTimeFormat.yMMMMEEEEd().format(jalaliTomorrow)); //trueprint(tomorrow.toFormat('yMMMMEEEEd')); // Thursday, September 19, 2023
// DateTime
print(tomorrow.toFormat('yMMMMEEEEd') == DateFormat.yMMMMEEEEd().format(tomorrow)); //true
}
```## Contribution
Contributions are welcome! If you encounter any issues, have feature requests, or want to contribute code, please feel free to open an issue or create a pull request.
## License
This package is distributed under the MIT License. See the [LICENSE](LICENSE) file for more information.
---
**Note**: This package is primarily focused on providing a stable and efficient way to work with Jalali dates. For more detailed documentation and usage examples, refer to the package documentation or visit the [GitHub repository](https://github.com/fmotalleb/jalali_date_time_dart).
For additional information on the Jalali calendar, consider referencing external resources and documentation on the Persian calendar system.