Last active
January 30, 2024 03:26
-
-
Save ltvu93/6048c4f1f5a6aaa170aca81097a67659 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
import 'package:intl/date_symbol_data_local.dart'; | |
import 'package:intl/intl.dart'; | |
void main() async { | |
await initializeDateFormatting(); | |
runApp(TestDateFormatApp()); | |
} | |
class TestDateFormatApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return const MaterialApp( | |
home: TestDateFormatScreen(), | |
); | |
} | |
} | |
class TestDateFormatScreen extends StatefulWidget { | |
const TestDateFormatScreen({super.key}); | |
@override | |
State<TestDateFormatScreen> createState() => _TestDateFormatScreenState(); | |
} | |
class _TestDateFormatScreenState extends State<TestDateFormatScreen> { | |
String _curLocale = 'en_US'; | |
@override | |
Widget build(BuildContext context) { | |
final now = DateTime.now(); | |
final icuConstantNames = [ | |
DateFormat.ABBR_MONTH, | |
DateFormat.DAY, | |
DateFormat.ABBR_WEEKDAY, | |
DateFormat.WEEKDAY, | |
DateFormat.ABBR_STANDALONE_MONTH, | |
DateFormat.STANDALONE_MONTH, | |
DateFormat.NUM_MONTH, | |
DateFormat.NUM_MONTH_DAY, | |
DateFormat.NUM_MONTH_WEEKDAY_DAY, | |
DateFormat.ABBR_MONTH_DAY, | |
DateFormat.ABBR_MONTH_WEEKDAY_DAY, | |
DateFormat.MONTH, | |
DateFormat.MONTH_DAY, | |
DateFormat.MONTH_WEEKDAY_DAY, | |
DateFormat.ABBR_QUARTER, | |
DateFormat.QUARTER, | |
DateFormat.YEAR, | |
DateFormat.YEAR_NUM_MONTH, | |
DateFormat.YEAR_NUM_MONTH_DAY, | |
DateFormat.YEAR_NUM_MONTH_WEEKDAY_DAY, | |
DateFormat.YEAR_ABBR_MONTH, | |
DateFormat.YEAR_ABBR_MONTH_DAY, | |
DateFormat.YEAR_ABBR_MONTH_WEEKDAY_DAY, | |
DateFormat.YEAR_MONTH, | |
DateFormat.YEAR_MONTH_DAY, | |
DateFormat.YEAR_MONTH_WEEKDAY_DAY, | |
DateFormat.YEAR_ABBR_QUARTER, | |
DateFormat.YEAR_QUARTER, | |
DateFormat.HOUR24, | |
DateFormat.HOUR24_MINUTE, | |
DateFormat.HOUR24_MINUTE_SECOND, | |
DateFormat.HOUR, | |
DateFormat.HOUR_MINUTE, | |
DateFormat.HOUR_MINUTE_SECOND, | |
]; | |
return Scaffold( | |
body: SafeArea( | |
child: SingleChildScrollView( | |
padding: const EdgeInsets.all(16), | |
child: Column( | |
children: [ | |
DropdownButton<String>( | |
value: _curLocale, | |
icon: const Icon(Icons.arrow_downward), | |
elevation: 16, | |
style: const TextStyle(color: Colors.deepPurple), | |
underline: Container( | |
height: 2, | |
color: Colors.deepPurpleAccent, | |
), | |
onChanged: (value) { | |
setState(() { | |
_curLocale = value!; | |
}); | |
}, | |
items: DateFormat.allLocalesWithSymbols() | |
.map<DropdownMenuItem<String>>((value) { | |
return DropdownMenuItem<String>( | |
value: value, | |
child: Text(value), | |
); | |
}).toList(), | |
), | |
const SizedBox(height: 8), | |
ListView.separated( | |
primary: false, | |
shrinkWrap: true, | |
itemCount: icuConstantNames.length, | |
itemBuilder: (_, index) { | |
final dateFormat = | |
DateFormat(icuConstantNames[index], _curLocale); | |
return Padding( | |
padding: const EdgeInsets.symmetric(vertical: 16), | |
child: Column( | |
crossAxisAlignment: CrossAxisAlignment.start, | |
children: [ | |
// Text('${index + 1}/'), | |
// SizedBox(height: 8), | |
Text( | |
dateFormat.pattern ?? '', | |
), | |
const SizedBox(height: 8), | |
Text(dateFormat.format(now)), | |
], | |
), | |
); | |
}, | |
separatorBuilder: (_, __) => Container( | |
height: 1, | |
color: Colors.black, | |
), | |
), | |
], | |
), | |
), | |
), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
en_US
LLL
Aug
d
18
ccc
Fri
cccc
Friday
LLL
Aug
LLLL
August
L
8
M/d
8/18
EEE, M/d
Fri, 8/18
MMM d
Aug 18
EEE, MMM d
Fri, Aug 18
LLLL
August
MMMM d
August 18
EEEE, MMMM d
Friday, August 18
QQQ
Q3
QQQQ
3rd quarter
y
2023
M/y
8/2023
M/d/y
8/18/2023
EEE, M/d/y
Fri, 8/18/2023
MMM y
Aug 2023
MMM d, y
Aug 18, 2023
EEE, MMM d, y
Fri, Aug 18, 2023
MMMM y
August 2023
MMMM d, y
August 18, 2023
EEEE, MMMM d, y
Friday, August 18, 2023
QQQ y
Q3 2023
QQQQ y
3rd quarter 2023
HH
11
HH:mm
11:05
HH:mm:ss
11:05:25
HH
11
HH:mm
11:05
HH:mm:ss
11:05:25
LLL
Aug
d
18
ccc
Fri
cccc
Friday
LLL
Aug
LLLL
August
L
8
M/d
8/18
EEE, M/d
Fri, 8/18
MMM d
Aug 18
EEE, MMM d
Fri, Aug 18
LLLL
August
MMMM d
August 18
EEEE, MMMM d
Friday, August 18
QQQ
Q3
QQQQ
3rd quarter
y
2023
M/y
8/2023
M/d/y
8/18/2023
EEE, M/d/y
Fri, 8/18/2023
MMM y
Aug 2023
MMM d, y
Aug 18, 2023
EEE, MMM d, y
Fri, Aug 18, 2023
MMMM y
August 2023
MMMM d, y
August 18, 2023
EEEE, MMMM d, y
Friday, August 18, 2023
QQQ y
Q3 2023
QQQQ y
3rd quarter 2023
HH
11
HH:mm
11:05
HH:mm:ss
11:05:32
h a
11 AM
h:mm a
11:05 AM
h:mm:ss a
11:05:32 AM