Orientação gerada a partir de informações públicas. Apenas para referência.
Um pacote Flutter/Dart que fornece utilitários para formatar objetos DateTime do Dart. Ele suporta notação padrão de data/hora, bem como deslocamentos de tempo relativo (por exemplo, 'há 2 minutos'). Projetado para simplificar a apresentação de datas em aplicativos em múltiplas plataformas, oferece saída limpa e legível sem exigir formatação manual complexa. O pacote é leve e se integra perfeitamente a projetos existentes.
Casos de uso
Exibindo horários de atividade do usuário
Formatar datas em aplicativos de chat ou redes sociais
Mostrando tempo relativo desde um evento
Localização de exibição de datas em aplicativos multilíngues
Simplificando a geração de strings de data em componentes da interface
Principais recursos
Suporta formatação de tempo relativo
Gerencia padrões de data/hora padrão
Leve e fácil de integrar
Compatibilidade multiplataforma
API simples para necessidades comuns de formatação
Indicado para
Aplicativos que precisam de timestamps legíveis por humanos
Desenvolvedores procurando soluções mínimas de formatação de data
Projetos direcionados para múltiplas plataformas
Aplicações com interface pesada e exibição frequente de datas
Equipes que priorizam simplicidade e manutenibilidade do código
Considerações
Limitado a opções básicas de formatação
Sem suporte de localização embutido
Depende das configurações de localidade padrão do sistema
Pode exigir configuração adicional para formatos personalizados
Não adequado para manipulação complexa de datas internacionais
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
date_time_format
A utility class, and extension methods, for formatting Dart's [DateTime]
object using standard date/time notation or as a relative time offset.
date_time_format exposes 2 utility methods, [format] and [relative], that
are added to the [DateTime] class as extension methods or can be accessed
via the [DateTimeFormat] utility class.
[format] and [relative] format [DateTime] objects as defined by standard
date/time notation or as relative to the current or a provided [DateTime],
respectively.
See the Date/Time Notations section below for a complete list of supported
formatting notations.
In addition to the formatting utilities, a variety of date/time notation
formatting constants are pre-defined in the following classes: DateTimeFormats
contains standard date/time formatting notations. DateFormats
and TimeFormats contain common date-only and time-only
formatting constants, respectively. Additional American and European date/time
formatting constants can be found in the AmericanDateFormats,
AmericanDateTimeFormats, EuropeanDateFormats, and EuropeanDateTimeFormats classes.
Standard Formatting
Note: Each example below shows the extension method being utilized, and
the utility method being used on the next line. Both methods will return the
same output.
final dateTime = DateTime.now();
// 2019-10-15T19:42:05-08:00print(dateTime.format());
print(DateTimeFormat.format(dateTime));
// October 15, 2019 7:42 pmprint(dateTime.format(DateTimeFormats.american));
print(DateTimeFormat.format(dateTime, format: DateTimeFormats.american));
// 15/Oct/2019:19:42:05 -0700print(dateTime.format(DateTimeFormats.commonLogFormat));
print(DateTimeFormat.format(dateTime, format: DateTimeFormats.commonLogFormat));
// Tuesday, October 15, 2019print(dateTime.format(AmericanDateFormats.dayOfWeek));
print(DateTimeFormat.format(dateTime, format: AmericanDateFormats.dayOfWeek));
// Tue, Oct 15, 19:42print(dateTime.format('D, M j, H:i'));
print(DateTimeFormat.format(dateTime, format: 'D, M j, H:i'));
Relative Formatting
By default, [DateTimeFormat.relative] returns the time offset rounded to the nearest
whole unit of time.
To compare the provided [DateTime] to another [DateTime] object, the [relativeTo]
parameter can be set.
final timeOffset1 = dateTime.subtract(Duration(minutes: 5));
final timeOffset2 = dateTime.add(Duration(minutes: 5));
// 5 minutesprint(DateTimeFormat.relative(timeOffset1));
// 10 minutesprint(DateTimeFormat.relative(timeOffset1, relativeTo: timeOffset2));
Level of Precision:
The [levelOfPrecision] parameter sets the degrees of removal from the largest
interval counted that will be included in the count. I.e. minutes are 1
degree removed from hours, and seconds are 2 degrees removed from hours but
only 1 degree removed from minutes.
Note: Weeks can be excluded as an interval of time by setting the
[excludeWeeks] parameter to true, and will not be counted as a degree
of time in regards to [levelOfPrecision].
The minimum and maximum intervals to include in the count can be specified by
the [minUnitOfTime] and [maxUnitOfTime] respectively. The largest possible
interval of time being a year, and the smallest being a microsecond.
By default, the smallest unit of time returned is a second, to include milliseconds
or microseconds the [minUnitOfTime] parameter must be set to [UnitOfTime.milliseconds]/
[UnitOfTime.microseconds]. Note: Milliseconds and microseconds may be returned slightly
off from the expected values if the function takes longer to process than those intervals
of time.
Rounding, which is enabled by default, can be disabled by setting the [round]
parameter to false, in which case any measure of time that isn't included
in the smallest returned interval will be truncated.
[formatAfter] can be set to a [Duration] of time to return a standard formatted
date/time stamp, via the [DateTimeFormat.format] method, if the difference in
time is greater than the duration specified.
By default, date/time stamps will be formatted to the [AmericanDateTimeStamp.abbrWithComma]
constant. A different formatting notation can be provided via the [format] parameter.
final timeOffset = dateTime.subtract(Duration(days: 762, hours: 6, minutes: 30));
// 2 yearsprint(DateTimeFormat.relative(timeOffset));
// Apr 29, 2018 6:27 amprint(DateTimeFormat.relative(timeOffset, formatAfter: Duration(days: 365)));
// 6:27 am · Apr 29, 2018print(DateTimeFormat.relative(timeOffset, formatAfter: Duration(days: 365),
format: r'g:i a · M j, Y'));
Prepending & Appending Text:
[prependIfBefore] and [appendIfAfter] can be used to conveniently prepend and/or append a
[String] before or after the returned relative time offset if the formatted [DateTime] occurs
before or after [relativeTo] (which defaults to DateTime.now()), respectively.
// 5 days agoprint(DateTimeFormat.relative(dateTime.subtract(Duration(days: 5)),
prependIfBefore: 'In', appendIfAfter: 'ago'));
// In 5 daysprint(DateTimeFormat.relative(dateTime.add(Duration(days: 5)),
prependIfBefore: 'In', appendIfAfter: 'ago'));
Return X Below Minimum Unit of Time:
The [ifNow] parameter can be set to return a value if the difference in time is less
than [minUnitOfTime], otherwise, an empty string will be returned.