dotnetstrftime 1.1.0 copy "dotnetstrftime: ^1.1.0" to clipboard
dotnetstrftime: ^1.1.0 copied to clipboard

Package offering support for formatting DateTime's according to the same rules as .NET does with their Format Strings.

Dart package that offers support for formatting DateTime's according to the same rules as .NET does with their Format Strings.

There are some quirks: Because this package is based on both Intl and Timezone, some of the formatting available doesn't line up 1:1 with .NET. as an example, using the italian locale it, the time separator should return ., but instead it currently returns :. For the most part, the mismatches are small.

Usage #

Singleton #

  // May 8th, 2023 T 2:42:33.2332
  var dtWithEmptyMilliseconds = DateTime(2023, 05, 08, 14, 42, 50, 000, 678);

  // Formatting with a raw character, in multiple mode
  dtWithEmptyMilliseconds.formatAsDotNET("d"); // "5/8/2023"

Multiple #

  // May 8th, 2023 T 2:42:33.2332
  var dtWithEmptyMilliseconds = DateTime(2023, 05, 08, 14, 42, 50, 000, 678);

  // Formatting with a raw character, in singleton mode
  dtWithEmptyMilliseconds.formatAsDotNET("dd-MM-yy"); // "05-08-23"

Supported Tokens #

When only one token is supplied, the parser enters singleton mode, which parses specific tokens as short-hand for fully formed regular date formats:

Singleton Tokens #

Token .NET This Dart Package Description Output
d Short date pattern. 2009-06-15T13:45:30 -> 6/15/2009 (en-US)
f Full date/time pattern (short time). 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM (en-US)
F Full date/time pattern (long time). 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM (en-US)
g General date/time pattern (short time). 2009-06-15T13:45:30 -> 6/15/2009 1:45 PM (en-US)
m Month/day pattern. 2009-06-15T13:45:30 -> June 15 (en-US)
s Sortable date/time pattern. 2009-06-15T13:45:30 -> 2009-06-15T13:45:30
t Short time pattern. 2009-06-15T13:45:30 -> 1:45 PM (en-US)
y Year month pattern. 2009-06-15T13:45:30 -> June 2009 (en-US)
z

Multiple Tokens #

When multiple tokens are supplied, the parser will parse each token individually, allowing construction of to-order time formats:

Token .NET This Dart Package Description Output
d Day of month from 0 through 31 2009-06-01T13:45:30 -> 01
dd Day of month pattern from 00 through 31 2009-06-01T13:45:30 -> 01
ddd Abbreviated Day of month pattern 2009-06-15T13:45:30 -> Mon (en-US)
dddd Full day of month pattern 2009-06-15T13:45:30 -> Monday (en-US)
D Long date pattern. 2009-06-15T13:45:30 -> Monday, June 15, 2009 (en-US)
f Tens of seconds 2009-06-15T13:45:30.617542 -> 6
ff Hundreths of seconds 2009-06-15T13:45:30.617542 -> 61
fff The milliseconds in a date and time value. 6/15/2009 13:45:30.617542 -> 617
ffff The ten thousandths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 6175
fffff The hundred thousandths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 61754
ffffff The millionths of a second in a date and time value. 2009-06-15T13:45:30.6175420 -> 617542
fffffff The ten millionths of a second in a date and time value. 2009-06-15T13:45:30.6175425 -> 6175425
F If non-zero, Tens of seconds 2009-06-15T13:45:30.617542 -> 6
2009-06-15T13:45:30.0050000 -> (no output)
FF If non-zero, Hundreths of seconds 2009-06-15T13:45:30.617542 -> 61
2009-06-15T13:45:30.0050000 -> (no output)
FFF If non-zero, The milliseconds in a date and time value 2009-06-15T13:45:30.617542 -> 61
2009-06-15T13:45:30.0050000 -> (no output)
FFFF If non-zero, The ten thousandths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 617
2009-06-15T13:45:30.0050000 -> (no output)
FFFFF If non-zero, The hundred thousandths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 6175
2009-06-15T13:45:30.0050000 -> (no output)
FFFFFF If non-zero, The millionths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 61754
2009-06-15T13:45:30.0050000 -> (no output)
FFFFFFF If non-zero, The ten millionths of a second in a date and time value. 2009-06-15T13:45:30.617542 -> 617542
2009-06-15T13:45:30.0050000 -> (no output)
g Period or Era 2009-06-15T13:45:30.6170000 -> A.D.
gg Period or Era 2009-06-15T13:45:30.6170000 -> A.D.
G General date/time pattern (long time). 2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US)
h The hour, using a 12-hour clock from 1 to 12. 2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 1
hh The hour, using a 12-hour clock from 01 to 12. 2009-06-15T01:45:30 -> 01
2009-06-15T13:45:30 -> 01
H The hour, using a 24-hour clock from 0 to 23. 2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 13
HH The hour, using a 24-hour clock from 00 to 23 2009-06-15T01:45:30 -> 01
2009-06-15T13:45:30 -> 13
K Time zone information. 2009-06-15T13:45:30, Kind Unspecified -> (no output)
2009-06-15T13:45:30, Kind Utc -> Z
2009-06-15T13:45:30, Kind Local -> -07:00 (depends on local computer settings)
m The minute, from 0 through 59. 2009-06-15T13:00:30 -> 0 (en-US)
mm The minute, from 00 through 59. 2009-06-15T13:00:30 -> 00 (en-US)
M Month/day pattern. 2009-06-15T13:45:30 -> June 15 (en-US)
M* The month, from 1 through 12. 2009-06-15T13:45:30 -> 6
MM The month, from 01 through 12. 2009-06-15T13:45:30 -> 06
MMM The abbreviated name of the month. 2009-06-15T13:45:30 -> Jun (en-US)
MMMM The full name of the month. 2009-06-15T13:45:30 -> June (en-US)
o round-trip date/time pattern. 2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.0000000-07:00
O round-trip date/time pattern. 2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.0000000-07:00
r RFC1123 pattern. 2009-06-15T13:45:30 -> Mon, 15 Jun 2009 13:45:30 GMT
R RFC1123 pattern. 2009-06-15T13:45:30 -> Mon, 15 Jun 2009 13:45:30 GMT
s The second, from 0 through 59. 2009-06-15T13:45:09 -> 9
ss The second, from 00 through 59. 2009-06-15T13:45:09 -> 09
t The first character of the AM/PM designator. 009-06-15T13:45:30 -> P (en-US)
tt The AM/PM designator. 009-06-15T13:45:30 -> PM (en-US)
T Long time pattern. 2009-06-15T13:45:30 -> 1:45:30 PM (en-US)
TT X
u Universal sortable date/time pattern. 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z
U Universal full date/time pattern. 2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM (en-US)
y The year, from 0 to 99. 0001-01-01T00:00:00 -> 1
yy The year, from 00 to 99. 0001-01-01T00:00:00 -> 01
yyy The year, with a minimum of three digits. 0001-01-01T00:00:00 -> 001
yyyy The year as a four-digit number. 0001-01-01T00:00:00
yyyyy The year as a five-digit number 0001-01-01T00:00:00 -> 00001
Y Year-Month pattern 2009-06-15T13:45:30 -> June 2009 (en-US)
z Hours offset from UTC 2009-06-15T13:45:30-07:00 -> -7
zz Hours offset from UTC, with a leading zero for a single-digit value 2009-06-15T13:45:30-07:00 -> -07
zzz Hours and minutes offset from UTC. 2009-06-15T13:45:30-07:00 -> -07:00
\ Escape character 987654 "###00#" -> #987654#
'string' Literal string delimiter 68 "#" "degrees" -> 68 degrees
0 X Zero placeholder 1234.5678 ("00000") -> 01235
# X Digit placeholder 1234.5678 ("#####") -> 1235
. X Decimal point 0.45678 ("0.00", en-US) -> 0.46
, X Group separator and number scaling 2147483647 ("##,#", en-US) -> 2,147,483,647
; X Section separator 0.3697 ("%#0.00", en-US) -> %36.97
% X Percentage placeholder 0.3697 ("%#0.00", en-US) -> %36.97
X Per mille placeholder 0.03697 ("#0.00‰", en-US) -> 36.97‰
E0 X Exponential notation
E+0 X Exponential notation
E-0 X Exponential notation
e0 X Exponential notation 987654 ("#0.0e0") -> 98.8e4
e+0 X Exponential notation 1.8901385E-16 ("0.0e+00") -> 1.9e-16
e-0 X Exponential notation

String Literals #

Add your literal string in "quotation marks" to get a literal, unparsed string in the output:

final now = DateTime.now();
now.formatAsDotNET('dd "days"') // "15 days"

Contributing #

To contribute to this library, consider contributing to the underlying Timezone, or filing issues with Intl. For changes to this actual package, visit the github at https://github.com/0xNF/dart_.netstrftime

1
likes
150
points
35
downloads

Publisher

verified publisherwinetech.com

Weekly Downloads

Package offering support for formatting DateTime's according to the same rules as .NET does with their Format Strings.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

characters, collection, intl, timezone

More

Packages that depend on dotnetstrftime