【发布时间】:2019-03-08 17:44:30
【问题描述】:
如何设置/更改 DateTime 对象的小时和/或分钟。类似于 JavaScript 中的Date.setHours(..)。
例如,如果我这样做了
var time = DateTime.parse("2018-08-16T11:00:00.000Z");
如何设置time的小时和分钟
【问题讨论】:
如何设置/更改 DateTime 对象的小时和/或分钟。类似于 JavaScript 中的Date.setHours(..)。
例如,如果我这样做了
var time = DateTime.parse("2018-08-16T11:00:00.000Z");
如何设置time的小时和分钟
【问题讨论】:
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() 方法,该方法只允许修改特定部分,但看起来这还没有实现。
【讨论】:
您也可以通过使用此包Jiffy 对日期时间添加或减去来做到这一点。它还尊重闰年和每个月有多少天
var updateTime = Jiffy("2018-08-16T11:00:00.000Z").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
【讨论】:
现在有了扩展你可以做这样的事情
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,
);
}
}
【讨论】:
final newVariable = oldValue.copyWith(year: oldValue.year+1);
?。例如:int? year
我相信这是一个比公认答案更好的解决方案:
DateTime dateTime = DateFormat('dd-MM-yyyy h:mm:ssa', 'en_US').parseLoose('01-11-2020 2:00:00AM');
【讨论】:
我有一个更简单的解决方案:
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 减去小时、分钟...
【讨论】: