我怎样才能得到当前的日期(时间和分钟) ?

我在文档中看到的是 DateTime.now(),但它也返回时间跨度,我只需要日期。

135886 次浏览

在核心库中没有类来建模日期时间,您必须使用 new DateTime.now()

请注意,日期取决于时区: 巴黎的 2016-01-20 02:00:00与西雅图的 2016-01-19 17:00:00相同,但 白天不同。

now创建一个新的日期,只包含你需要的部分:

DateTime now = new DateTime.now();
DateTime date = new DateTime(now.year, now.month, now.day);

提示: “ new”在 Dart 中是可选的,因为已经有一段时间了

如果您只想要没有时间戳的日期,可以使用 intl 包的帮助。

main() {
var now = new DateTime.now();
var formatter = new DateFormat('yyyy-MM-dd');
String formattedDate = formatter.format(now);
print(formattedDate); // 2016-01-25
}

这需要使用 intl 包:

dependencies:
intl: ^0.16.1

最后是进口:

import 'package:intl/intl.dart';

如果你更喜欢基于君特•佐奇鲍尔(Günter Zöchbauer)回答的更简洁、更单行的格式,你也可以这样写:

DateTime dateToday = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day) ;

尽管它会对 DateTime.now ()进行3次调用,但是不需要额外的变量,特别是在使用 Dart 三元操作符或在 Flutter UI 代码块中时。

可以使用 DateTime 类获取当前日期,并使用 DateFormat 格式化 Date。DateFormat 类要求您导入 intl 包,以便

加入 pubspec.yaml

dependencies:
intl: ^0.17.0

和进口

import 'package:intl/intl.dart';

然后使用

 final now = new DateTime.now();
String formatter = DateFormat('yMd').format(now);// 28/03/2020
            

如果你想知道如何记住日期格式(DateFormat('yMd')) ? 那么扑动文档就是答案

允许用户从一组标准日期时间格式中进行选择,并在某些地区指定自定义模式。 以下格式直接取自文档

/// Examples Using the US Locale:
///      Pattern                         Result
///      ----------------                -------
new DateFormat.yMd()             -> 7/10/1996
new DateFormat('yMd')            -> 7/10/1996
new DateFormat.yMMMMd('en_US')   -> July 10, 1996
new DateFormat.jm()              -> 5:08 PM
new DateFormat.yMd().add_jm()    -> 7/10/1996 5:08 PM
new DateFormat.Hm()              -> 17:08 // force 24 hour time


ICU Name                   Skeleton
--------                   --------
DAY                          d
ABBR_WEEKDAY                 E
WEEKDAY                      EEEE
ABBR_STANDALONE_MONTH        LLL
STANDALONE_MONTH             LLLL
NUM_MONTH                    M
NUM_MONTH_DAY                Md
NUM_MONTH_WEEKDAY_DAY        MEd
ABBR_MONTH                   MMM
ABBR_MONTH_DAY               MMMd
ABBR_MONTH_WEEKDAY_DAY       MMMEd
MONTH                        MMMM
MONTH_DAY                    MMMMd
MONTH_WEEKDAY_DAY            MMMMEEEEd
ABBR_QUARTER                 QQQ
QUARTER                      QQQQ
YEAR                         y
YEAR_NUM_MONTH               yM
YEAR_NUM_MONTH_DAY           yMd
YEAR_NUM_MONTH_WEEKDAY_DAY   yMEd
YEAR_ABBR_MONTH              yMMM
YEAR_ABBR_MONTH_DAY          yMMMd
YEAR_ABBR_MONTH_WEEKDAY_DAY  yMMMEd
YEAR_MONTH                   yMMMM
YEAR_MONTH_DAY               yMMMMd
YEAR_MONTH_WEEKDAY_DAY       yMMMMEEEEd
YEAR_ABBR_QUARTER            yQQQ
YEAR_QUARTER                 yQQQQ
HOUR24                       H
HOUR24_MINUTE                Hm
HOUR24_MINUTE_SECOND         Hms
HOUR                         j
HOUR_MINUTE                  jm
HOUR_MINUTE_SECOND           jms
HOUR_MINUTE_GENERIC_TZ       jmv
HOUR_MINUTE_TZ               jmz
HOUR_GENERIC_TZ              jv
HOUR_TZ                      jz
MINUTE                       m
MINUTE_SECOND                ms
SECOND                       s

希望这可以帮助您获得任何格式的 Date。

您可以在 DateTime.now()中使用 day

首先转到 pub.dev,获取 intl 包并将其添加到项目中。

YMMMMd () . format (要呈现的日期,但必须是 DateTime 类型)

用这个

import 'package:intl/intl.dart';




getCurrentDate() {
return DateFormat('yyyy-MM-dd – kk:mm').format(DateTime.now());
}

这没有使用任何包(它将转换为字符串)

  DateTime dateToday =new DateTime.now();
String date = dateToday.toString().substring(0,10);
print(date); // 2021-06-24

还有飞镖

extension MyDateExtension on DateTime {
DateTime getDateOnly(){
return DateTime(this.year, this.month, this.day);
}
}

用法:

DateTime now = DateTime.now(); // 30/09/2021 15:54:30
DateTime dateOnly = now.getDateOnly(); // 30/09/2021

如果有人需要最简单的方法来格式化日期/时间,不需要插件:

var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];


String formattedDateTime() {
DateTime now = new DateTime.now();
return now.day.toString()+" "+MONTHS[now.month-1]+" "+now.year.toString()+" "+now.hour.toString()+":"+now.minute.toString()+":"+now.second.toString();
}

示例结果: 2020年1月1日07:30:45

改变:

  • 以任何语言显示月份的数组
  • 根据需要显示返回字符串: 仅显示日期、仅显示时间或 不同的格式(dd/mm/yyyy、 dd-mm-yyyy、 mm/dd/yyyy 等)

如果你只是需要从时间跨度中打印出年份,你可以简单地这样做:

DateTime nowDate = DateTime.now();
int currYear = nowDate.year;


print(currYear.toString());


如果你想要设备的当前日期,只需使用这个

 DateTime internetTime = DateTime.now();
DateTime date = new DateTime(now.year, now.month, now.day);

或者,如果你想上网的时间,然后使用下面的插件

Ntp: ^ 2.0.0

 import 'package:ntp/ntp.dart';


final int offset = await NTP.getNtpOffset(
localTime: DateTime.now(), lookUpAddress: "time.google.com");
DateTime internetTime = DateTime.now().add(Duration(milliseconds: offset));
DateTime internetTime = new DateTime(now.year, now.month, now.day);

或者,如果你需要上网时间,但你不想使用插件,然后使用 API 调用

"http://worldtimeapi.org/api/timezone/Asia/Kolkata"
{
"abbreviation": "IST",
"client_ip": "136.232.222.86",
"datetime": "2022-09-30T17:13:10.299478+05:30",
"day_of_week": 5,
"day_of_year": 273,
"dst": false,
"dst_from": null,
"dst_offset": 0,
"dst_until": null,
"raw_offset": 19800,
"timezone": "Asia/Kolkata",
"unixtime": 1664538190,
"utc_datetime": "2022-09-30T11:43:10.299478+00:00",
"utc_offset": "+05:30",
"week_number": 39
}