dart 如何在日期时间类中只显示日期?

bvn4nwqk  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(97)

我试图显示一个日历,以便用户通过单击预订按钮选择预订日期。预订日的日期显示在按钮下方。我使用DateTime类。
我有两个问题:1-我想“只是”显示预订日的日期。我不需要确切的时间和时间,我不知道如何做到这一点。我试图与“溢出和范围”,但我不能。
2-你知道我的代码中的toLocal()方法(Text('reservation date:${selectedtime.toLocal()}'),)的用法吗?
x1c 0d1x的数据
下面是我的全部代码:

import "package:flutter/material.dart";

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyPage(),
    );
  }
}

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

  @override
  State<MyPage> createState() => _Example();
}

class _Example extends State<MyPage> {
  DateTime selectedtime = DateTime.now();

  datePicker(BuildContext context) async {
    final DateTime? picked = await showDatePicker(
        context: context,
        initialDate: selectedtime,
        firstDate: DateTime(2023),
        lastDate: DateTime(2025));

    if (picked != null && picked != selectedtime) {
      setState(() {
        selectedtime = picked;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('HDBOOKS'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Center(
            child: ElevatedButton(
                onPressed: () => datePicker(context),
                child: const Text('reserve')),
          ),
          const SizedBox(
            height: 36,
          ),
          Text('reservation date : ${selectedtime.toLocal()}'),
        ],
      ),
    );
  }
}

字符串
下面是我的代码,当我想解决分裂的问题:
//当我使用split时,我需要显示一个范围的东西,但我不知道如何在split中使用范围。这会引发错误!

Text(
              'reservation date : ${selectedtime.toLocal()}'.split(' ')[0 : 3]),


请帮帮我,谢谢!🙏

eagi6jfj

eagi6jfj1#

这里有两种解决方案。第一种(更简单)是将DateTime对象转换为字符串,然后拆分它并像这样获得第一部分:

final DateTime now = DateTime.now();
now.toString().split(' ')[0]

字符串
这就可以了;但是,如果你想要更多的控制,我建议你阅读这个answer

vcirk6k6

vcirk6k62#

1.你可以使用intl包中的DateFormat类来格式化。

DateFormat('yyyy-mm-dd').format(selectedtime.toLocal());

字符串

  1. toLocal()确保设备的本地时间,有些国家也使用夏令时。
zwghvu4y

zwghvu4y3#

你也可以使用这个:

DateTime date = DateTime.now();
String today = '${date.day}-${date.month}-${date.year}';

字符串
通过这个你可以得到日,月,年,小时,分钟等

相关问题