您可以使用 intl 包中的 DateFormat
。
import 'package:intl/intl.dart';
DateTime now = DateTime.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);
将 intl
package 添加到您的 pubspec.yaml
文件中。
import 'package:intl/intl.dart';
DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
将 DateTime 对象转换为字符串
String string = dateFormat.format(DateTime.now());
将字符串转换为 DateTime 对象
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
使用这种方法,无需导入任何库。
DateTime now = DateTime.now();
String convertedDateTime = "${now.year.toString()}-${now.month.toString().padLeft(2,'0')}-${now.day.toString().padLeft(2,'0')} ${now.hour.toString().padLeft(2,'0')}-${now.minute.toString().padLeft(2,'0')}";
输出
2020-12-05 14:57
padLeft(2,'0')
添加到分钟字段,否则 14:07 将显示为 14:7
这是我的简单解决方案。这不需要任何依赖。
但是,日期将采用字符串格式。如果您想要时间,请更改子字符串值
print(new DateTime.now()
.toString()
.substring(0,10)
); // 2020-06-10
试试这个包 Jiffy,它也在 Intl 之上运行,但使用 momentjs 语法更容易。见下文
import 'package:jiffy/jiffy.dart';
var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");
您还可以执行以下操作
var a = Jiffy().yMMMMd; // October 18, 2019
你也可以传入你的 DateTime 对象,一个字符串和一个数组
var a = Jiffy(DateTime(2019, 10, 18)).yMMMMd; // October 18, 2019
var a = Jiffy("2019-10-18").yMMMMd; // October 18, 2019
var a = Jiffy([2019, 10, 18]).yMMMMd; // October 18, 2019
使用此功能
todayDate() {
var now = new DateTime.now();
var formatter = new DateFormat('dd-MM-yyyy');
String formattedTime = DateFormat('kk:mm:a').format(now);
String formattedDate = formatter.format(now);
print(formattedTime);
print(formattedDate);
}
输出:
08:41:AM
21-12-2019
自 0.16 以来发生了一些变化,所以我是怎么做的,
在 pubspec.yaml 中导入
dependencies:
flutter:
sdk: flutter
intl: ^0.16.1
然后使用
txdate= DateTime.now()
DateFormat.yMMMd().format(txdate)
您也可以使用此语法。对于 YYYY-MM-JJ HH-MM:
var now = DateTime.now();
var month = now.month.toString().padLeft(2, '0');
var day = now.day.toString().padLeft(2, '0');
var text = '${now.year}-$month-$day ${now.hour}:${now.minute}';
DateTime.now()
已弃用,请改用 clock.now()
:
import 'package:clock/clock.dart';
DateTime now = clock.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);
DateTime.now()
未被弃用。 api.flutter.dev/flutter/dart-core/DateTime-class.html
如果用户是美国公民,但希望以 24 小时格式查看所有内容 - 那么显示基于区域设置的 12/24 小时将不会满足用户
// getting system settings 12/24 h format
if (MediaQuery.of(context).alwaysUse24HourFormat){
timeFormat = new DateFormat("kk:mm", languageCode); //24h format
}
else{
timeFormat = new DateFormat("KK:mm a", languageCode); //12h format
}
//then use it:
'${timeFormat.format DateTime.now())}'
使用字符串拆分方法删除:00.000
var formatedTime = currentTime.toString().split(':')
Text(formatedTime[0])
======= 或使用以下代码用于 YYYY-MM-DD HH:MM:SS 格式而不使用库 ====
var stringList = DateTime.now().toIso8601String().split(new RegExp(r"[T\.]"));
var formatedDate = "${stringList[0]} ${stringList[1]}";
static String convertDateFormat(String dateTimeString, String oldFormat, String
newFormat) {
DateFormat newDateFormat = DateFormat(newFormat);
DateTime dateTime = DateFormat(oldFormat).parse(dateTimeString);
String selectedDate = newDateFormat.format(dateTime);
return selectedDate;
}
以这种方式调用此方法
convertDateFormat(inputDate, "dd-mm-yyyy", "d MMM yyyy");
你不能在 dart 中格式化日期,所以你需要使用外部包,我推荐这篇文章:https://www.geeksforgeeks.org/format-dates-in-flutter/
DateTime
的简单 扩展方法怎么样。运行时可能不是很好,因为我们多次迭代字符串并迭代每个 %
格式选项。可能会遍历一次并贪婪地替换 %
。
extension DateTimeFormat on DateTime {
/// Supports the following, inspired by: https://linux.die.net/man/3/strptime
/// %Y: The year, including century (for example, 1991).
/// %m: The month number (1-12).
/// %d: The day of month (1-31).
/// %H: The hour (0-23).
/// %M: The minute (0-59).
/// %S: The second (0-59).
String format(String formatString) {
var hourString = hour.toString();
var dayString = day.toString();
var monthString = month.toString();
var minuteString = minute.toString();
var secondString = second.toString();
var yearString = year.toString();
var map = {
'%H': hourString.padLeft(3 - hourString.length, '0'), // the pad values here are the desired length + 1
'%d': dayString.padLeft(3 - dayString.length, '0'),
'%m': monthString.padLeft(3 - monthString.length, '0'),
'%M': minuteString.padLeft(3 - minuteString.length, '0'),
'%S': secondString.padLeft(3 - secondString.length, '0'),
'%Y': yearString.padLeft(5 - yearString.length, '0'),
};
return map.entries.fold(formatString, (acc, entry) => acc.replaceAll(entry.key, entry.value));
}
}
用法:
print(DateTime(2021, 10, 16, 4, 4, 4, 4, 4).format('%Y-%m-%d-%H-%M-%S'));
// '2021-10-16-04-04-04'
随时提出更改建议。
转换 sting int Dateformat 的最好和最简单的方法是,
print(DateTime.parse('2020-01-02')); // 2020-01-02 00:00:00.000
print(DateTime.parse('20200102')); // 2020-01-02 00:00:00.000
print(DateTime.parse('-12345-03-04')); // -12345-03-04 00:00:00.000
print(DateTime.parse('2020-01-02 07')); // 2020-01-02 07:00:00.000
print(DateTime.parse('2020-01-02T07')); // 2020-01-02 07:00:00.000
print(DateTime.parse('2020-01-02T07:12')); // 2020-01-02 07:12:00.000
print(DateTime.parse('2020-01-02T07:12:50')); // 2020-01-02 07:12:50.000
print(DateTime.parse('2020-01-02T07:12:50Z')); // 2020-01-02 07:12:50.000Z
print(DateTime.parse('2020-01-02T07:12:50+07')); // 2020-01-02 00:12:50.000Z
print(DateTime.parse('2020-01-02T07:12:50+0700')); // 2020-01-02 00:12:50.00
print(DateTime.parse('2020-01-02T07:12:50+07:00')); // 2020-01-02 00:12:50.00
不定期副业成功案例分享
intl: 0.15.7
依赖项添加到您的pubspec.yaml
文件中。可以在 here 中找到该库的最新版本。DateFormat.yMd(myLocale.languageCode).format(now)
获取当前设备语言环境,如下所示:Locale myLocale = Localizations.localeOf(context)