Dart의 DateTime 객체를 포맷하기 위한 유틸리티를 제공하는 플러터/다트 패키지입니다. 표준 날짜/시간 표기법과 상대 시간 오프셋(예: '2분 전')을 모두 지원합니다. 다양한 플랫폼에서 앱 내 날짜 표시를 단순화하고, 복잡한 수동 포맷팅 없이 깔끔하고 읽기 쉬운 출력을 제공합니다. 이 패키지는 가볍고 기존 프로젝트에 쉽게 통합될 수 있습니다.
사용 사례
사용자 활동 타임스탬프 표시
채팅 또는 소셜 미디어 앱에서 날짜 형식 지정
이벤트 이후의 상대 시간 표시
다국어 앱에서 날짜 표시 로컬라이제이션
UI 컴포넌트에서 날짜 문자열 생성을 단순화하기
주요 기능
상대적 시간 형식화를 지원합니다
표준 날짜/시간 패턴을 처리합니다
경량이며 통합이 쉬움
크로스 플랫폼 호환성
일반적인 형식 지정 요구 사항을 위한 간단한 API
적합한 대상
사람이 읽을 수 있는 타임스탬프가 필요한 앱
최소한의 날짜 포맷팅 솔루션을 찾는 개발자
다중 플랫폼을 대상으로 하는 프로젝트
자주 날짜를 표시하는 UI 중심 애플리케이션
코드의 단순성과 유지보수성을 우선시하는 팀
고려 사항
기본 형식 옵션에만 제한됨
내장된 로컬라이제이션 지원 없음
기본 시스템 지역 설정에 의존합니다
사용자 정의 형식을 위해 추가 설정이 필요할 수 있습니다
복잡한 국제 날짜 처리에 적합하지 않습니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
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.