我正在尝试显示一个日历,以便用户通过单击预订按钮来选择预订日期。按钮下方显示预订日的日期。 我正在使用 DateTime 类。
我有两个问题: 1-我想“仅”显示预订日期。我不需要确切的时间和时间,而且我不知道该怎么做。我尝试过“split and a range”,但我做不到。
2-你知道我的代码中的 toLocal() 方法 (Text('reservation date : ${selectedtime.toLocal()}'),) 有什么用途吗?有必要吗?
这是我的整个代码:
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 问题时的代码:
//当我使用拆分时,我需要显示一系列内容,但我不知道如何在拆分中使用范围。 它会引发错误!
Text(
'reservation date : ${selectedtime.toLocal()}'.split(' ')[0 : 3]),
请帮助我谢谢! 🙏
这里有两个解决方案第一个(最简单的)是将 DateTime 对象转换为字符串,然后将其拆分并得到第一部分,如下所示:
final DateTime now = DateTime.now();
now.toString().split(' ')[0]
这样就可以了,但是如果你想要更多的控制,我建议你阅读这个answer。