如何获得Dart中的当前日期(w/o小时和分钟)?

use*_*369 19 dart

我在文档中看到的只是Datetime.now(),但它返回Timespan,我只需要日期.

谢谢.

Ete*_*ode 40

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

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

这需要 intl 包:

dependencies:
  intl: ^0.16.1
Run Code Online (Sandbox Code Playgroud)

最后导入:

import 'package:intl/intl.dart';
Run Code Online (Sandbox Code Playgroud)

  • 我想你应该补充一点,这需要 intl 包。 (3认同)

Gün*_*uer 23

now仅使用您需要的部件创建新日期:

DateTime now = new DateTime.now();
DateTime date = new DateTime(now.year, now.month, now.day);
Run Code Online (Sandbox Code Playgroud)

  • 另外,我可以建议这个解决方案在不创建变量的情况下获取“日期”: `DateTime.now().copyWith(hour: 0, 分钟: 0, Second: 0, millisecond: 0, microsecond: 0)` (3认同)
  • 适用于颤振 (2认同)
  • 如何删除 00:00:00.000 ?应该使用替换吗?```date.toString().replaceAll("00:00:00.000", "")``` (2认同)
  • 我会使用 intl 包来使用自定义日期/时间格式来格式化日期/时间 (2认同)

mah*_*mnj 15

你可以得到当前日期

 final now = new DateTime.now();
 String formatter = DateFormat('yMd').format(now);// 28/03/2020
            
Run Code Online (Sandbox Code Playgroud)

问:你想知道你是如何记住日期格式( DateFormat('yMd'))的吗?

A.=> 那么 Flutter Docs 就是答案

DateFormat类允许用户从一组标准日期时间格式选择以及直接从文档指定在某些locales.Taken定制图案

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

/// 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
Run Code Online (Sandbox Code Playgroud)

希望现在您可以获得使用上述格式所需的任何类型的日期格式。


fun*_*983 14

带省道延伸

extension MyDateExtension on DateTime {
  DateTime getDateOnly(){
    return DateTime(this.year, this.month, this.day);
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

DateTime now = DateTime.now(); // 30/09/2021 15:54:30
DateTime dateOnly = now.getDateOnly(); // 30/09/2021
Run Code Online (Sandbox Code Playgroud)


小智 13

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

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


San*_*eek 6

用这个

\n

import 'package:intl/intl.dart';\n\n\ngetCurrentDate() {\n       return DateFormat('yyyy-MM-dd \xe2\x80\x93 kk:mm').format(DateTime.now());\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Ale*_*uin 4

核心库中没有类可以对没有时间的日期进行建模。你必须使用new DateTime.now().

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