Luxon - 设置 toISO() 的毫秒数

Ste*_*scu 9 milliseconds luxon

我使用以下命令来获取来自日期选择器的日期的结束时间:

var date = DateTime.fromISO('2018-05-05').endOf('day');
Run Code Online (Sandbox Code Playgroud)

我想要的结果是

"2018-05-05T23:59:59+02:00"
Run Code Online (Sandbox Code Playgroud)

但是,我无法摆脱毫秒:

console.log(date.toISO({suppressMilliseconds: true}));
// => outputs "2018-05-05T23:59:59.999+02:00"
Run Code Online (Sandbox Code Playgroud)

除了简单地将 设为 0 之外,还有更优雅的方法吗millisecond

date.c.millisecond = 0;
console.log(date.toISO({suppressMilliseconds: true}));
// => outputs "2018-05-05T23:59:59+02:00"
Run Code Online (Sandbox Code Playgroud)

sni*_*ack 14

是的,suppressMilliseconds仅当它们为 0 时才适用。(参见此处)。

但是有一种更简单的方法可以对第二个进行四舍五入:

DateTime.fromISO('2018-05-05')
  .endOf('day')
  .startOf('second')
  .toISO({ suppressMilliseconds: true })
Run Code Online (Sandbox Code Playgroud)

您永远不应该像解决方法中那样改变 Luxon 对象。


小智 6

const { DateTime } = require("luxon");
let time = DateTime.now().set({milliseconds: 0});
time = time.toISO({suppressMilliseconds: true});
console.log(time);
Run Code Online (Sandbox Code Playgroud)

它应该有助于并解决问题。