我只是尝试将时间戳转换回人类可读的日期,但转换时得到的却是奇怪而错误的。
这就是我保存时间戳的方法:
var timestamp = Number(new Date());
localStorag.setItem("mytimestamp", timestamp);
这就是我将其恢复并将其转换为可读日期的方式:
var mydate = localStorag.getItem("mytimestamp");
var jsDate = new Date(mydate*1000);
alert(jsDate);
jsDate
错了,我不明白导致它的原因!
有人可以就此提出建议吗?
答案 0 :(得分:10)
您可以使用Number
数据类型代替date * 1000
来实现此目的。请参阅下面的代码示例:
// generate a timestamp
var timestamp = Number(new Date()) //1479895361931
然后
// get the date representation from the timestamp
var date = new Date(timestamp) // Wed Nov 23 2016 18:03:25 GMT+0800 (WITA)
答案 1 :(得分:6)
以下是使用toDateString()
方法的简单解决方案:
const date = new Date(timestamp).toDateString();
console.log(date);
这将返回类似于: 2016年7月14日星期四
答案 2 :(得分:4)
此处出现问题的原因是您将时间戳乘以1000。
如果您只是将myDate
传递给Date
构造函数,那么您应该获得正确的时间 -
var timestamp = Number(new Date());
localStorage.setItem("mytimestamp", timestamp);
// ...
var mydateStr = localStorage.getItem("mytimestamp");
var myDate = Number(mydateStr); // convert the string back to a number
var jsDate = new Date(mydate);
Javascript确实处理了毫秒,但由于您使用Javascript生成时间戳,然后使用Javascript将其读回,因此无需转换 - 您可以按原样使用该值。
正如@manish在评论中指出的那样,存储在localStorage中的值将是一个字符串 - 记得在将它传递给Date构造函数之前将其转换回数字。
答案 3 :(得分:2)
尝试使用moment.js
。它添加了诸如
moment().format('MMMM Do YYYY, h:mm:ss a'); // November 23rd 2016, 12:03:36 pm
moment().format('dddd'); // Wednesday
moment().format("MMM Do YY"); // Nov 23rd 16
moment().format('YYYY [escaped] YYYY'); // 2016 escaped 2016
moment().format(); // 2016-11-23T12:03:36+02:00
答案 4 :(得分:1)
var yourTimestamp = localStorag.getItem("mytimestamp");
jsDate = new Date(yourTimestamp);
jsDateValues = [
jsDate.getFullYear(),
jsDate.getMonth()+1,
jsDate.getDate(),
jsDate.getHours(),
jsDate.getMinutes(),
jsDate.getSeconds(),
];
alert(jsDateValues); //=> [2011, 3, 25, 23, 0, 0]
你可以使用baove值并以你想要的格式打印,例如dd / mm / yyyy
答案 5 :(得分:1)
这里的问题是,当你在localstorage中存储一些东西时,它被存储为字符串'1479895747557'
而不是数字所以当你从localstorage返回时间戳时,它不是一个数字,而是一个字符串。虽然当你乘以它时实际上由于内部转换而改变的值变为1479895747557000
,这代表了与你保存的日期不同的日期。所以解决方案是将字符串转换回数字。这是可以正常工作的代码。
var timestamp = Number(new Date());
localStorage.setItem("mytimestamp", timestamp);
var mydate = localStorage.getItem("mytimestamp");
var jsDate = new Date(Number(mydate));
alert(jsDate);

以下是不执行转换回数字的代码,这将为您提供无效日期。
var timestamp = Number(new Date());
localStorage.setItem("mytimestamp", timestamp);
var mydate = localStorage.getItem("mytimestamp");
var jsDate = new Date(mydate);
alert(jsDate);

<强> FIDDLE 强>
答案 6 :(得分:0)
通过在nodejs项目中安装moment
模块:
npm i --save moment
在 file.js 文件中,您可以编写:
const moment = require('moment');
let timestamp = Number(new Date());
let myMoment = moment(timestamp).format("MMMM Do YYYY_HH-mm-ss.SSSS"); // February 28th 2020_01-06-34.0000
Here moment
的文档。