Flutter 日期格式化
获取日期
DateTime d=DateTime.now();
print(d); //2023-08-31 12:05:56.010143
print("${d.year}-${d.month}-${d.day} ${d.hour}:${d.minute}:${d.second}");
获取时间戳
DateTime d=DateTime.now();
print(d.millisecondsSinceEpoch);
日期转换成时间戳
日期转换成时间
DateTime d=DateTime(2023,08,1);
print(d.millisecondsSinceEpoch);
日期字符串转换成时间
print(DateTime.parse("2021-08-01"));
print(DateTime.parse("2021-08-01 08:01:30"));
DateTime d=DateTime.parse("2021-08-01 08:01:30");
print(d.millisecondsSinceEpoch);
时间加减
DateTime time = DateTime.now();
print(time);
print(time.add(const Duration(minutes: 30)));
print(time.add(const Duration(minutes: -30)));
Flutter showDatePicker
import 'package:flutter/material.dart';
import 'listData.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
DateTime d = DateTime.now();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
InkWell(
onTap: () {
showDatePicker(
context: context,
initialDate: d,
// firstDate 当前时间减去10年
firstDate: DateTime.now().subtract(const Duration(days: 3650)),
// lastDate 当前时间
lastDate: DateTime.now(),
locale: const Locale('zh'), // 设置中文
).then((value) {
setState(() {
if (value != null) {
d = value;
}
});
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('${d.year}-${d.month}-${d.day}'),
Icon(Icons.arrow_drop_down),
],
),
)
],
),
);
}
}
Flutter showTimePicker
import 'package:flutter/material.dart';
import 'listData.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
TimeOfDay _time = TimeOfDay.now();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
InkWell(
onTap: () async {
var result = await showTimePicker(
context: context,
initialTime: _time,
builder: (context, child) {
return Localizations(
locale: const Locale('zh'),
child: child!,
delegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
]);
},
);
setState(() {
if (result != null) {
_time = result;
}
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('${_time.hour}:${_time.minute}'),
const Icon(Icons.arrow_drop_down),
],
),
)
],
),
);
}
}
国际化
配置flutter_localizations依赖
找到pubspec.yaml配置flutter_localizations
dependencies: flutter: sdk: flutter flutter_localizations: sdk: fluttermain.dart导入国际化的包 flutter_localizations
import 'package:flutter_localizations/flutter_localizations.dart';
设置国际化
void main() { runApp( new MaterialApp( title: 'app', theme: new ThemeData( primaryColor: Colors.white, ), home: new MyLoginWidget(), localizationsDelegates: const [ //此处 GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: const[ //此处 Locale('zh', 'CH'), Locale('en', 'US'), ], ), ); }
要显示中文的控件设置
_showDatePicker() async{ var date =await showDatePicker( context: context, initialDate: _datetime, firstDate:DateTime(1900), lastDate:DateTime(2050), locale: Locale('zh'), ); if(date==null) return; print(date); setState(() { _datetime=date; }); }