从日期转换为 ISO 字符串中删除秒/毫秒
Remove Seconds/ Milliseconds from Date convert to ISO String
我有一个想要的日期对象
- 删除毫秒/或设置为 0
- 删除秒/或设置为 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'
库,只需将秒和毫秒设置为零并使用内置的 toISOString 方法:
var d = new Date();
d.setSeconds(0,0);
document.write(d.toISOString());
注意:IE 8 及更低版本不支持 toISOString,MDN 上有一个 pollyfil。
虽然这很容易用普通的JavaScript解决(参见RobG的答案),但我想向您展示Moment.js解决方案,因为您将问题标记为"momentjs":
moment().seconds(0).milliseconds(0).toISOString();
这为您提供了当前日期时间,没有秒或毫秒。
工作示例:http://jsbin.com/bemalapuyi/edit?html,js,output
从文档中: http://momentjs.com/docs/#/get-set/
执行此操作的非库正则表达式:
new Date().toISOString().replace(/.'d+Z$/g, "Z");
这只会减少不必要的部分。 预计不会进行四舍五入。
这里有点晚了,但现在你可以:
var date = new Date();
此对象具有:
date.setMilliseconds(0);
和
date.setSeconds(0);
然后像你一样打电话给toISOString()
,你会没事的。
没有时刻或其他人。
纯JavaScript解决方案,用于修剪秒和毫秒(即删除,而不仅仅是设置为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 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/, "");
Luxon 可能是你的朋友
您可以将 millisecond
s 设置为 0
,然后使用 Luxon 的suppressMilliseconds
来抑制毫秒。
DateTime.now().toUTC().set({ millisecond: 0 }).toISO({
suppressMilliseconds: true,
includeOffset: true,
format: 'extended',
}),
导致例如
<小时 />2022-05-06T14:17:26Z
要同时抑制秒数:
const now = DateTime.now();
console.log("now as TS", now.toMillis());
const x = now.toUTC().set({ millisecond: 0, second: 0 }).toISO({
includeOffset: true,
format: "extended"
});
console.log("stripped as ISO", x);
console.log("stripped as TS", DateTime.fromISO(x).toMillis());
下面是一个交互式示例(CodeSandbox):https://codesandbox.io/s/angry-cerf-gl9nsc?file=/src/index.js
你可以在一瞬间使用 startOf() 方法.js来实现你想要的。
下面是一个示例:
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>
let date = new Date();
date = new Date(date.getFullYear(), date.getMonth(), date.getDate());
我希望这有效!!
要删除秒和毫秒值,这对我有用:
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]'))
我们也可以使用普通的JS来做到这一点,但是如果您正在使用更多功能/检查,则使用库将为您提供帮助。
您可以使用矩 npm 模块并使用拆分的 Fn 删除毫秒。
const moment = require('moment')
const currentDate = `${moment().toISOString().split('.')[0]}Z`;
console.log(currentDate)
请参阅此处的工作示例:https://repl.it/repls/UnfinishedNormalBlock
Date.prototype.toISOString()
长度始终为 24 或 27 个字符(分别为 YYYY-MM-DDTHH:mm:ss.sssZ 或 ±YYYYY-MM-DDTHH:mm:ss.sssZ)
从toISOString
返回的最后8个字符总是模式:ss.sssZ
;因此向后切片可能更优雅:
new Date().toISOString().slice(0, -8) // 2023-04-18T12:23
现在,如果需要,您可以添加:00.000z
。
如果没有运气,请尝试此代码它是SQL和PHP中常用的日期时间格式例如2022-12-25 19:13:55
console.log(new Date().toISOString().replace(/^([^T]+)T([^'.]+)(.+)/, "$1 $2") )
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- iframe正在添加标签,需要删除它们
- 检测个位数整数时正在转换毫秒
- 如何在HTML输入字段中添加不可删除的后缀
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 删除CKEditor工具栏按钮,但不删除功能
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 正在删除node.js中已验证的网站
- 正在从页面中删除iframe
- 如何从 HTML 查询中删除项目
- Javascript正在删除DateTime[YYYY/MM/DD/HH:MM:SS:MM]中的毫秒
- 从日期转换为 ISO 字符串中删除秒/毫秒
- 每隔几毫秒删除剪贴板中的所有内容