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

bvn4nwqk  于 2024-01-03  发布在  其他
关注(0)|答案(3)|浏览(112)

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

  1. import "package:flutter/material.dart";
  2. void main() => runApp(const MyApp());
  3. class MyApp extends StatelessWidget {
  4. const MyApp({super.key});
  5. @override
  6. Widget build(BuildContext context) {
  7. return const MaterialApp(
  8. home: MyPage(),
  9. );
  10. }
  11. }
  12. class MyPage extends StatefulWidget {
  13. const MyPage({super.key});
  14. @override
  15. State<MyPage> createState() => _Example();
  16. }
  17. class _Example extends State<MyPage> {
  18. DateTime selectedtime = DateTime.now();
  19. datePicker(BuildContext context) async {
  20. final DateTime? picked = await showDatePicker(
  21. context: context,
  22. initialDate: selectedtime,
  23. firstDate: DateTime(2023),
  24. lastDate: DateTime(2025));
  25. if (picked != null && picked != selectedtime) {
  26. setState(() {
  27. selectedtime = picked;
  28. });
  29. }
  30. }
  31. @override
  32. Widget build(BuildContext context) {
  33. return Scaffold(
  34. appBar: AppBar(
  35. title: const Text('HDBOOKS'),
  36. ),
  37. body: Column(
  38. mainAxisAlignment: MainAxisAlignment.center,
  39. children: [
  40. Center(
  41. child: ElevatedButton(
  42. onPressed: () => datePicker(context),
  43. child: const Text('reserve')),
  44. ),
  45. const SizedBox(
  46. height: 36,
  47. ),
  48. Text('reservation date : ${selectedtime.toLocal()}'),
  49. ],
  50. ),
  51. );
  52. }
  53. }

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

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


请帮帮我,谢谢!🙏

eagi6jfj

eagi6jfj1#

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

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

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

vcirk6k6

vcirk6k62#

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

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

字符串

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

zwghvu4y3#

你也可以使用这个:

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

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

相关问题