MomentJS toISOString AM/PM 不正确
MomentJS toISOString AM/PM Incorrect
我正在尝试在 <iondatetime>
字段中设置默认时间,以便当用户点击该字段更改时间时,默认时间显示为所选的当前时间。但是,在尝试这样做时,中午 12 点之后的任何时间都显示不正确。
时间以 UTC 格式存储在数据库中。我还希望它们在数据库中显示,而不是根据设备转换为当地时间。我尝试过保留默认偏移量和不保留默认偏移量,但都失败了:
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(false);
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
使用 data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
时,结果如下(左列是存储在数据库中的内容 - 右列是转换后的内容):
08:00:00 - 2019-07-25T08:00:00.000-07:00
09:30:00 - 2019-07-25T09:30:00.000-07:00
17:30:00 - 2019-07-25T05:30:00.000-07:00
19:30:00 - 2019-07-25T07:30:00.000-07:00
它是从任何超过 12 的东西中减去 12,这将有效地将时间变成 12 小时而不是 24 小时,但是,它在显示时不起作用。当我将 <iondatetime>
与 displayFormat="h:mma" 一起使用时,它仍然显示 5:30a
和 7:30a
。即使我将其更改为 displayFormat="HH:mmA" 仍然显示 5:30a
和 7:30a
.
我期待看到 5:30p
和 7:30p
,这将是正确的时间。
我的问题最终是我在将数据库转换为 ISO 字符串之前修改了数据库中的初始时间。
data[key]['time'] = moment(data[key]['time'], 'HH:mm:ss').format('h:mma');
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
应该是:
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
data[key]['time'] = moment(data[key]['time'], 'HH:mm:ss').format('h:mma');
我正在尝试在 <iondatetime>
字段中设置默认时间,以便当用户点击该字段更改时间时,默认时间显示为所选的当前时间。但是,在尝试这样做时,中午 12 点之后的任何时间都显示不正确。
时间以 UTC 格式存储在数据库中。我还希望它们在数据库中显示,而不是根据设备转换为当地时间。我尝试过保留默认偏移量和不保留默认偏移量,但都失败了:
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(false);
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
使用 data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
时,结果如下(左列是存储在数据库中的内容 - 右列是转换后的内容):
08:00:00 - 2019-07-25T08:00:00.000-07:00
09:30:00 - 2019-07-25T09:30:00.000-07:00
17:30:00 - 2019-07-25T05:30:00.000-07:00
19:30:00 - 2019-07-25T07:30:00.000-07:00
它是从任何超过 12 的东西中减去 12,这将有效地将时间变成 12 小时而不是 24 小时,但是,它在显示时不起作用。当我将 <iondatetime>
与 displayFormat="h:mma" 一起使用时,它仍然显示 5:30a
和 7:30a
。即使我将其更改为 displayFormat="HH:mmA" 仍然显示 5:30a
和 7:30a
.
我期待看到 5:30p
和 7:30p
,这将是正确的时间。
我的问题最终是我在将数据库转换为 ISO 字符串之前修改了数据库中的初始时间。
data[key]['time'] = moment(data[key]['time'], 'HH:mm:ss').format('h:mma');
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
应该是:
data[key]['time_start'] = moment(data[key]['time'], 'HH:mm:ss').toISOString(true);
data[key]['time'] = moment(data[key]['time'], 'HH:mm:ss').format('h:mma');