从日期中删除秒/毫秒转换为 ISO 字符串
Remove Seconds/ Milliseconds from Date convert to ISO String
我有一个想要的日期对象
- 删除 miliseconds/or 设置为 0
- 删除 seconds/or 设置为 0
- 转换为 ISO 字符串
例如:
var date = new Date();
//Wed Mar 02 2016 16:54:13 GMT-0500 (EST)
var stringDate = moment(date).toISOString();
//2016-03-02T21:54:13.537Z
但我真正想要的是
stringDate = '2016-03-02T21:54:00.000Z'
虽然这很容易用简单的 JavaScript 解决(参见 RobG 的回答),但我想向您展示 Moment.js 解决方案,因为您将问题标记为“momentjs”:
moment().seconds(0).milliseconds(0).toISOString();
这会为您提供当前日期时间,没有秒或毫秒。
您可以使用 moment.js 中的 startOf() 方法来实现您想要的。
这是一个例子:
var date = new Date();
var stringDateFull = moment(date).toISOString();
var stringDateMinuteStart = moment(date).startOf("minute").toISOString();
$("#fullDate").text(stringDateFull);
$("#startOfMinute").text(stringDateMinuteStart);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.js"></script>
<p>Full date: <span id="fullDate"></span></p>
<p>Date with cleared out seconds: <span id="startOfMinute"></span></p>
不需要库,只需将秒和毫秒设置为零并使用内置的 toISOString 方法:
var d = new Date();
d.setSeconds(0,0);
document.write(d.toISOString());
注意:IE 8及更低版本不支持toISOString,有一个pollyfil on MDN.
纯javascript解决trim关闭秒和毫秒(即删除,不只是设置为0)。 JSPerf 说第二个函数更快。
function getISOStringWithoutSecsAndMillisecs1(date) {
const dateAndTime = date.toISOString().split('T')
const time = dateAndTime[1].split(':')
return dateAndTime[0]+'T'+time[0]+':'+time[1]
}
console.log(getISOStringWithoutSecsAndMillisecs1(new Date()))
function getISOStringWithoutSecsAndMillisecs2(date) {
const dStr = date.toISOString()
return dStr.substring(0, dStr.indexOf(':', dStr.indexOf(':')+1))
}
console.log(getISOStringWithoutSecsAndMillisecs2(new Date()))
这里有点晚了,但现在你可以:
var date = new Date();
这个对象有:
date.setMilliseconds(0);
和
date.setSeconds(0);
然后像你一样打电话给toISOString()
,你会没事的。
没有时间或其他部门。
let date = new Date();
date = new Date(date.getFullYear(), date.getMonth(), date.getDate());
我希望这有效!!
我们也可以使用纯 JS 来完成,但如果您正在使用更多库,则使用库将对您有所帮助 functionalities/checks。
您可以使用 moment npm 模块并使用拆分 Fn 删除毫秒。
const moment = require('moment')
const currentDate = `${moment().toISOString().split('.')[0]}Z`;
console.log(currentDate)
在此处参考工作示例:
https://repl.it/repls/UnfinishedNormalBlock
这个版本适合我(不使用外部库):
var now = new Date();
now.setSeconds(0, 0);
var stamp = now.toISOString().replace(/T/, " ").replace(/:00.000Z/, "");
生成类似
的字符串
2020-07-25 17:45
如果您想要当地时间,请使用此变体:
var now = new Date();
now.setSeconds(0, 0);
var isoNow = new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString();
var stamp = isoNow.replace(/T/, " ").replace(/:00.000Z/, "");
一个 non-library 正则表达式来做到这一点:
new Date().toISOString().replace(/.\d+Z$/g, "Z");
这只会 trim 减少不必要的部分。不需要四舍五入。
Luxon 可以成为你的朋友
您可以将 millisecond
设置为 0
,然后使用 suppressMilliseconds
和 Luxon 来抑制毫秒数。
DateTime.now().toUTC().set({ millisecond: 0 }).toISO({
suppressMilliseconds: true,
includeOffset: true,
format: 'extended',
}),
导致例如
2022-05-06T14:17:26Z
删除秒和毫秒值这对我有用:
const date = moment()
// Remove milliseconds
console.log(moment.utc(date).format('YYYY-MM-DDTHH:mm:ss[Z]'))
// Remove seconds and milliseconds
console.log(moment.utc(date).format('YYYY-MM-DDTHH:mm[Z]'))
我有一个想要的日期对象
- 删除 miliseconds/or 设置为 0
- 删除 seconds/or 设置为 0
- 转换为 ISO 字符串
例如:
var date = new Date();
//Wed Mar 02 2016 16:54:13 GMT-0500 (EST)
var stringDate = moment(date).toISOString();
//2016-03-02T21:54:13.537Z
但我真正想要的是
stringDate = '2016-03-02T21:54:00.000Z'
虽然这很容易用简单的 JavaScript 解决(参见 RobG 的回答),但我想向您展示 Moment.js 解决方案,因为您将问题标记为“momentjs”:
moment().seconds(0).milliseconds(0).toISOString();
这会为您提供当前日期时间,没有秒或毫秒。
您可以使用 moment.js 中的 startOf() 方法来实现您想要的。
这是一个例子:
var date = new Date();
var stringDateFull = moment(date).toISOString();
var stringDateMinuteStart = moment(date).startOf("minute").toISOString();
$("#fullDate").text(stringDateFull);
$("#startOfMinute").text(stringDateMinuteStart);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.js"></script>
<p>Full date: <span id="fullDate"></span></p>
<p>Date with cleared out seconds: <span id="startOfMinute"></span></p>
不需要库,只需将秒和毫秒设置为零并使用内置的 toISOString 方法:
var d = new Date();
d.setSeconds(0,0);
document.write(d.toISOString());
注意:IE 8及更低版本不支持toISOString,有一个pollyfil on MDN.
纯javascript解决trim关闭秒和毫秒(即删除,不只是设置为0)。 JSPerf 说第二个函数更快。
function getISOStringWithoutSecsAndMillisecs1(date) {
const dateAndTime = date.toISOString().split('T')
const time = dateAndTime[1].split(':')
return dateAndTime[0]+'T'+time[0]+':'+time[1]
}
console.log(getISOStringWithoutSecsAndMillisecs1(new Date()))
function getISOStringWithoutSecsAndMillisecs2(date) {
const dStr = date.toISOString()
return dStr.substring(0, dStr.indexOf(':', dStr.indexOf(':')+1))
}
console.log(getISOStringWithoutSecsAndMillisecs2(new Date()))
这里有点晚了,但现在你可以:
var date = new Date();
这个对象有:
date.setMilliseconds(0);
和
date.setSeconds(0);
然后像你一样打电话给toISOString()
,你会没事的。
没有时间或其他部门。
let date = new Date();
date = new Date(date.getFullYear(), date.getMonth(), date.getDate());
我希望这有效!!
我们也可以使用纯 JS 来完成,但如果您正在使用更多库,则使用库将对您有所帮助 functionalities/checks。
您可以使用 moment npm 模块并使用拆分 Fn 删除毫秒。
const moment = require('moment')
const currentDate = `${moment().toISOString().split('.')[0]}Z`;
console.log(currentDate)
在此处参考工作示例: https://repl.it/repls/UnfinishedNormalBlock
这个版本适合我(不使用外部库):
var now = new Date();
now.setSeconds(0, 0);
var stamp = now.toISOString().replace(/T/, " ").replace(/:00.000Z/, "");
生成类似
的字符串2020-07-25 17:45
如果您想要当地时间,请使用此变体:
var now = new Date();
now.setSeconds(0, 0);
var isoNow = new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString();
var stamp = isoNow.replace(/T/, " ").replace(/:00.000Z/, "");
一个 non-library 正则表达式来做到这一点:
new Date().toISOString().replace(/.\d+Z$/g, "Z");
这只会 trim 减少不必要的部分。不需要四舍五入。
Luxon 可以成为你的朋友
您可以将 millisecond
设置为 0
,然后使用 suppressMilliseconds
和 Luxon 来抑制毫秒数。
DateTime.now().toUTC().set({ millisecond: 0 }).toISO({
suppressMilliseconds: true,
includeOffset: true,
format: 'extended',
}),
导致例如
2022-05-06T14:17:26Z
删除秒和毫秒值这对我有用:
const date = moment()
// Remove milliseconds
console.log(moment.utc(date).format('YYYY-MM-DDTHH:mm:ss[Z]'))
// Remove seconds and milliseconds
console.log(moment.utc(date).format('YYYY-MM-DDTHH:mm[Z]'))