dotnetstrftime 1.1.0
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