12 Flutter UI 之 日期相关

一  日期获取与转换

可以使用第三方库 进行格式转换 https://pub.dev/packages/date_format/example

 var now = DateTime.now();
    // 打印结果 2023-02-19 08:43:41.258019
    print(now);
    // 打印时间戳 1676767470599
    print(now.millisecondsSinceEpoch);
    // 将时间戳转换为时间
    print(DateTime.fromMillisecondsSinceEpoch(1676767470599));
    // 利用第三方日期的格式转换  date_format
    print(formatDate(DateTime.now(), [yyyy, '年', mm, '月', dd, '日']));

二 系统的日期组件

import 'package:flutter/material.dart';
import 'package:date_format/date_format.dart';

class DatePickerPage extends StatefulWidget {
  const DatePickerPage({super.key});

  @override
  State<DatePickerPage> createState() => _DatePickerPageState();
}

class _DatePickerPageState extends State<DatePickerPage> {
  var _datetime = DateTime.now();
  var _time = TimeOfDay(hour: 11, minute: 31);
  // 日期组件
  _showDatePicker() async {
    var date = await showDatePicker(
        context: context,
        initialDate: _datetime,
        firstDate: DateTime(2020),
        lastDate: DateTime(2025));
    if (date == null) return;
    setState(() {
      _datetime = date;
    });
  }

  // 时间组件
  _showTimePicker() async {
    var time = await showTimePicker(context: context, initialTime: _time);
    if (time == null) return;
    print(time);
    setState(() {
      this._time = time;
    });
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("DatePicker")),
      body: Center(
          child: InkWell(
        onTap: () {
          // 选择日期组件
          _showDatePicker();
          // _showTimePicker();
        },
        child: Row(
          children: [
            Text(formatDate(_datetime, [yyyy, '年', mm, '月', dd, '日'])),
            Icon(Icons.arrow_drop_down),
          ],
        ),
      )),
    );
  }
}

日期组件的本地化

http://bbs.itying.com/topic/5cfb2a12f322340b2c90e764

三 第三方库

https://pub.dev/packages/flutter_date_pickers/install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值