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),
              ],
            ),
          )
        ],
      ),
    );
  }
}

国际化

  1. 配置flutter_localizations依赖

    找到pubspec.yaml配置flutter_localizations

    dependencies:
        flutter:
            sdk: flutter
        flutter_localizations:
            sdk: flutter
    
  2. main.dart导入国际化的包 flutter_localizations

    import 'package:flutter_localizations/flutter_localizations.dart';
    
  1. 设置国际化

    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'),
          ],
        ),
      );
    }
    
  1. 要显示中文的控件设置

    _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;
      });
    }
    

results matching ""

    No results matching ""