save_points_intl library
A comprehensive, modular, zero-dependency date/time library for Flutter
This library provides 100+ utility functions for working with dates and times in multiple languages without any external dependencies.
Features
- Date Formatting - 14+ formats with multi-language support
- Time Formatting - 12/24-hour formats with various options
- Date Comparisons - Check if dates are today, yesterday, weekend, etc.
- Date Calculations - Business days, age calculation, periods, etc.
- Relative Time - "2 hours ago", "in 3 days" format
- Smart Formatting - Context-aware date/time display
- Date Parsing - Parse multiple date formats
- 7 Languages - English, Spanish, French, German, Arabic, Japanese, Chinese
- Zero Dependencies - Pure Dart implementation
Usage
import 'package:save_points_intl/save_points_intl.dart';
// Date formatting
DateFormatters.formatDateLong(DateTime.now()); // "December 1, 2025"
DateFormatters.formatDateLong(DateTime.now(), 'es_ES'); // "1 de Diciembre de 2025"
// Time formatting
TimeFormatters.formatTime12Hour(DateTime.now()); // "2:30 PM"
TimeFormatters.formatTime24Hour(DateTime.now()); // "14:30"
// Date comparisons
DateComparisons.isToday(DateTime.now()); // true
DateComparisons.isWeekend(DateTime.now()); // true/false
// Date calculations
DateCalculations.startOfWeek(DateTime.now()); // Monday 00:00
DateCalculations.addBusinessDays(DateTime.now(), 5); // +5 weekdays
DateCalculations.calculateAge(birthDate); // Age in years
// Relative time
RelativeTime.getRelativeTime(twoHoursAgo); // "2 hours ago"
RelativeTime.getRelativeTime(tomorrow, 'es_ES'); // "en 1 día"
// Smart formatting
SmartFormatters.formatSmart(DateTime.now()); // "Today at 2:30 PM"
SmartFormatters.formatSmart(yesterday); // "Yesterday at 2:30 PM"
// Date parsing
DateParsers.parseFlexible('2025-12-01'); // DateTime object
DateParsers.isValidDate('2025-12-01'); // true
Available Classes
Core Classes
DateFormatters- Date formatting functions (14+)TimeFormatters- Time formatting functions (8+)DateComparisons- Date comparison utilities (45+)DateCalculations- Date calculations and timezone utilities (45+)RelativeTime- Relative time and duration formatting (5+)DateParsers- Date parsing utilities (3+)SmartFormatters- Context-aware smart formattingDateTimeConstants- Constants and translations
Modern Features
DateTimeExtensions- Extension methods on DateTime for fluent APIDateConfig- Global configuration for formatting optionsDateService- Centralized service class with cachingDateFormatterBuilder- Builder pattern for custom formattersDateValidators- Validation utilities- Custom Exceptions -
InvalidDateException,InvalidFormatPatternException, etc.
Supported Languages
- English (en, en_US, en_GB)
- Spanish (es, es_ES)
- French (fr, fr_FR)
- German (de, de_DE)
- Arabic (ar, ar_SA)
- Japanese (ja, ja_JP)
- Chinese (zh, zh_CN)
See the README for more examples.
Classes
- DateCalculations
- Date calculation utilities
- DateComparisons
- Date comparison utilities
- DateConfig
- Global configuration for date/time operations
- DateFormatterBuilder
- Builder for creating custom date/time formatters
- DateFormatterPresets
- Pre-built formatter configurations
- DateFormatters
- Date formatting utilities
- DateParsers
- Date parsing utilities
- DateService
- Centralized service for date/time operations
- DateTimeConstants
- Constants and translations for date/time formatting
- DateValidators
- Validation utilities for date/time operations
- RelativeTime
- Relative time formatting utilities
- SmartFormatters
- Smart formatting utilities
- TimeFormatters
- Time formatting utilities
Enums
- DateFormatStyle
- Style options for date formatting
- TimeFormatStyle
- Style options for time formatting
Extensions
- DateTimeExtensions on DateTime
- Extension methods on DateTime for date/time operations
Exceptions / Errors
- DateCalculationException
- Exception thrown when a date calculation results in an invalid date
- DateException
- Base exception class for all date/time related errors
- InvalidConfigurationException
- Exception thrown when a configuration is invalid
- InvalidDateException
- Exception thrown when a date string cannot be parsed
- InvalidDateRangeException
- Exception thrown when a date range is invalid (e.g., start > end)
- InvalidFormatPatternException
- Exception thrown when a date format pattern is invalid
- TimezoneException
- Exception thrown when a timezone operation fails
- UnsupportedLocaleException
- Exception thrown when a locale is not supported