Dart-如何设置DateTime对象的小时和分钟

时间:2018-10-03 13:18:30

标签: android dart flutter

如何设置/更改DateTime对象的小时和/或分钟。与JavaScript中的Date.setHours(..)类似。

例如,如果我这样做

var time = DateTime.parse("2018-08-16T11:00:00.000Z");

如何设置time的小时和分钟

5 个答案:

答案 0 :(得分:8)

现在使用扩展名,您可以执行类似的操作

extension MyDateUtils on DateTime {
  DateTime copyWith(
      {int year,
      int month,
      int day,
      int hour,
      int minute,
      int second,
      int millisecond,
      int microsecond}) {
    return DateTime(
      year ?? this.year,
      month ?? this.month,
      day ?? this.day,
      hour ?? this.hour,
      minute ?? this.minute,
      second ?? this.second,
      millisecond ?? this.millisecond,
      microsecond ?? this.microsecond,
    );
  }
}

答案 1 :(得分:5)

var newHour = 5;
time = time.toLocal();
time = new DateTime(time.year, time.month, time.day, newHour, time.minute, time.second, time.millisecond, time.microsecond);

在讨论中添加了一个update()方法,该方法仅允许修改特定的部分,但是看起来并没有实现。

答案 2 :(得分:2)

我有一个更简单的解决方案:

DateTime newDate = DateTime.now();
DateTime formatedDate = newDate.subtract(Duration(hours: newDate.hour, minutes: newDate.minute, seconds: newDate.second, milliseconds: newDate.millisecond, microseconds: newDate.microsecond));

然后来自“ formatedDate”的XX:XX应该为00:00

说明:

formatedDate是一个新的DateTime变量,其内容为newDate减去小时,分钟...的值

答案 3 :(得分:0)

您还可以使用此软件包Jiffy,通过对DateTime添加或减去来执行此操作。它还尊重leap年和每个月有多少天

var time = DateTime.parse("2018-08-16T11:00:00.000Z");
var updateTime = Jiffy(time).add(hours: 1); // 2018-08-16 12:00:00.000Z

print(updateTime.dateTime); // 2018-08-16 12:30:00.000Z

// also you can format it
print(updateTime.format("yyyy, MMM")); // 2018, Aug

// or use default formats
print(updateTime.yMMMEdjm); // Thu, Aug 16, 2018 12:30 PM

答案 4 :(得分:0)

我相信这是一个比公认答案更好的解决方案:

DateTime dateTime = DateFormat('dd-MM-yyyy h:mm:ssa', 'en_US').parseLoose('01-11-2020 2:00:00AM');