Javascript 在JS中转换为可读字符串时如何指定时间戳格式
我需要显示一个格式化的日期从谷歌分析提供的时间戳 标准溶液Javascript 在JS中转换为可读字符串时如何指定时间戳格式,javascript,unix-timestamp,Javascript,Unix Timestamp,我需要显示一个格式化的日期从谷歌分析提供的时间戳 标准溶液 var date = new Date(timestamp * 1000); var formatted = date.toString(); 产生错误的值1970年1月1日。这是因为时间戳格式 在PHP中,我可以指定时间戳格式: \DateTime::createFromFormat('Ymd', $timestamp); 如何在JS中执行此操作? 试试这种类型: var userDate=新日期(); var day=userD
var date = new Date(timestamp * 1000);
var formatted = date.toString();
产生错误的值1970年1月1日。这是因为时间戳格式
在PHP中,我可以指定时间戳格式:
\DateTime::createFromFormat('Ymd', $timestamp);
如何在JS中执行此操作?
试试这种类型:
var userDate=新日期();
var day=userDate.getDate();
var month=userDate.getMonth()+1;
var year=userDate.getFullYear();
警报(“日期格式为:“+年+”-“+月+”-“+日”)代码>在javascript中,您可以使用外部库,如
请参见此处有关.format
的详细信息由于您接收的日期格式为YYYYMMDD
,而不是a,因此您可以通过
使用提取年、月和日期
var时间戳='20170306',
year=parseInt(timestamp.slice(0,4,10)),
month=parseInt(timestamp.slice(5,6,10),
day=parseInt(timestamp.slice(7,8,10));
//-1,因为日期构造函数期望以0为基础的月份
日期=新日期(date.UTC(年、月-1日)),
gmt=date.togmString(),
local=date.toString();
console.log('GMT:',GMT);//2017年3月6日星期一00:00:00 GMT
console.log('Local:',Local)代码>时间戳从哪里来?你确定它是以秒为单位,不是以毫秒为单位吗?如果是在几秒钟内,这应该是可行的。时间戳
中包含什么数字?如果它是0
,或强制为0
的某个对象,例如空字符串,则0*1000
是0
,new Date(0)
返回一个引用Unix纪元或1970年1月1日的日期对象。例如20170306。应该是06点03分。17@ymakux这不是Unix时间戳,它只是一个用YYYYMMDD格式化的日期。A是自1970-01-01以来的秒数。2017-03-06的正确Unix时间戳应为1488787200000
。如果它只是一个YYYYMMDD格式的日期,那么很容易解析:新日期(timestamp.slice(0,4),timestamp.slice(5,6)-1,timestamp.slice(7,8))
。(之所以使用-1
,是因为Date构造函数期望的是一个以0为基础的月份)。将-1
与切片
生成的字符串一起使用会隐式将其强制为一个数字。您可能希望使用parseInt
显式强制它,以确保代码的意图是明确的:newdate(timestamp.slice(0,4),parseInt(timestamp.slice(5,6,10)-1,timestamp.slice(7,8))
.D'oh。正确的Unix时间戳应该是1488787200
,而不是1488787200000
我用JS代码生成它,它以毫秒为单位生成时间,而不是秒,并且忘记了除以1000得到秒。谢谢,我知道这个库。没有选择。很多只打印日期的代码都有非标准的时间戳格式——这就是问题所在
var date = moment.unix(timestamp);
date.format("YYYY MM DD");