abstract_date 1.0.2 copy "abstract_date: ^1.0.2" to clipboard
abstract_date: ^1.0.2 copied to clipboard

Abstract date is a fluent abstract date system for working with different date types.

abstract_date #

// registering the date systems that we want to use.
// if you don't register any adapters then 
// the default adapters are going to get registered automatically.
    Date.addType<ShamsiDate>(ShamsiDate());
    Date.addType<GregorianDate>(GregorianDate());

// Creating a new date
    var date = Date<ShamsiDate>(1379,6,26);

// Converting dates
    var converted = date.to<GregorianDate>();
    date = converted.to<Shamsi>();

// Type checking
    if(date.isTypeOf<ShamsiDate>()){
      print('its shamsi!');
    }
    
// Other utility methods
    var tomorrow = date.add(Duration(days: 1));
    
    Duration d = date.difference(tomorrow);
  
    var realTomorrow = date.copy(
      day: date.day + 1,
    );

Date adapters #

###Adding Adapters: Before using Date you should register the types you want to use.

    Date.addType<ShamsiDate>(ShamsiDate());
    Date.addType<GregorianDate>(GregorianDate());

Setting a default adapter #

For setting an adapter as default, just register it with no generic type.

    Date.addType(ShamsiDate());
    ...
    // no generic type is used
    var defaultDate = Date.now(); 

Implementing a new Date adapter #

class NewDateSystem extends DateAdapter with DateFormatter {
  ...
}

If you don't add the DateFormatter mixin, some methods on date will throw an exception:

  1. formatter
  2. monthName
  3. weekDayName
  4. formatted*
  5. formatBuilder*

*: these might not throw exception if you don't use named parts.

Renaming Adapters #

If you don't like the name of a certain adapter, just extend it and register with the new class:

class Hijri extends IslamicDate {}
...
Date.addType<Hijri>(Hijri());

DateAdapter provided implementations #

  1. GregorianDate
  2. HijriDate
  3. ShamsiDate

To use them, import abstract_date and then register them using Date.addType<T extends DateAdapter>() before using them.

1
likes
130
points
37
downloads

Publisher

verified publisheraligator.ir

Weekly Downloads

Abstract date is a fluent abstract date system for working with different date types.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

shamsi_date

More

Packages that depend on abstract_date