首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript日期格式与ISO类似,但为本地格式

Javascript日期格式与ISO类似,但为本地格式
EN

Stack Overflow用户
提问于 2012-09-14 03:15:18
回答 8查看 15.2K关注 0票数 40

我如何格式化一个像ISO格式的javascript日期,但在本地时间?

myDate.toISOString()我得到的时间是:"2012-09-13T19:12:23.826Z“

但是在这里,现在是22:13,那么如何在上面的格式中包含时区?

我最后做了..。

pad=function(e,t,n){n=n||"0",t=t||2;while((""+e).length<t)e=n+e;return e}
c = new Date()
c.getFullYear()+"-"+pad(c.getMonth()+1)+"-"+pad(c.getDate()-5)+"T"+c.toLocaleTimeString().replace(/\D/g,':')+"."+pad(c.getMilliseconds(),3)
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-09-14 03:21:13

AFAIK你不能在javascript中格式化日期(不使用外部库)。你能做的最好的事情就是“自己格式化”。我的意思是:

var date = new Date();
var year = date.getFullYear();
var month = date......


var ISOdate = year + "-" + month + "-" + .... ;

但是有一些好的库可以让你格式化日期!(请阅读library.getDate("YYYY-MM-DD.........");中的“格式”)

编辑:

Moment.js似乎就是你要找的东西:http://momentjs.com/

票数 6
EN

Stack Overflow用户

发布于 2021-01-17 15:01:26

这是一个小技巧,但可以通过利用瑞典使用非常接近ISO的格式的事实在一行中完成:

// Returns a string like 2021-01-17T01:59:57
function dateToISOButLocal(date) {
    return date.toLocaleString('sv').replace(' ', 'T');
}
票数 15
EN

Stack Overflow用户

发布于 2018-11-16 18:25:01

为了方便起见,我采用了Denis Howe所说的,下面是一个现成的函数。

还有一个修正:在最初的答案中,t-z不起作用,因为t是日期,而不是毫秒。

function dateToISOLikeButLocal(date) {
    const offsetMs = date.getTimezoneOffset() * 60 * 1000;
    const msLocal =  date.getTime() - offsetMs;
    const dateLocal = new Date(msLocal);
    const iso = dateLocal.toISOString();
    const isoLocal = iso.slice(0, 19);
    return isoLocal;
}

这样我就得到了作为URL参数所需的字符串类型:

"2018-11-16T12:23:50"
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12413243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档