将时间戳数据解析为本地日期和时间的问题
Posted
技术标签:
【中文标题】将时间戳数据解析为本地日期和时间的问题【英文标题】:Issues Parsing Timestamp data to Local Date and Time 【发布时间】:2021-10-20 19:15:02 【问题描述】:我在获取存储在 JSON 文件中的时间戳的本地日期和时间时遇到了一些问题。
getData()
方法应该从 JSON 文件中获取所有数据,包括格式为“YYYY-mm-dd”的日期并将其返回以加载到网页。但日期只是作为数字字符串加载,而不是人类可读格式的日期(即 YYYY-mm-dd)。
JSON 数据
[
"id": 1,
"name": "CastAway",
"description": "Cast movies, music, or pictures to any TV",
"createdDate": 1629343012430,
"lastUpdated": 1629343012430
,
"id": 2,
"name": "Turn",
"description": "Find directions to new destinations",
"createdDate": 1629343012430,
"lastUpdated": 1629343012430
]
代码
const fs = require('fs');
const util = require('util');
const readFile = util.promisify(fs.readFile);
const writeFile = util.promisify(fs.writeFile);
/**
* Logic for reading and writing project data
*/
class ProjectService
/**
* Constructor
* @param * datafile Path to a JSOn file that contains the project data
*/
constructor(datafile)
this.datafile = datafile;
// adding data to JSON file
async addEntry(name, description)
const data = (await this.getData()) || [];
const createdDate = Date.now();
const lastUpdated = Date.now();
const id = 0;
data.unshift( id, name, description, createdDate, lastUpdated );
return writeFile(this.datafile, JSON.stringify(data));
async getList()
const data = await this.getData();
for (let i in data)
data[i]['createdDate'] = new Date(data[i]['createdDate']);
data[i]['lastUpdated'] = new Date(data[i]['lastUpdated']);
console.log(data);
return data;
//reading data from JSON file
async getData()
const data = await readFile(this.datafile, 'utf8');
if (!data) return [];
return JSON.parse(data);
【问题讨论】:
【参考方案1】:在调用 JSON.parse 后,您将不得不重新创建日期,如下所示:
var data = await getData();
var parsedCreatedDate = new Date(data[0]['createdDate']);
var parsedlastUpdated = new Date(data[0]['lastUpdated']);
【讨论】:
查看更改代码。我添加了getList()
方法,它解析数据并在 console.log(data);
输出中输出正确的日期,但它不会延续到网站。以上是关于将时间戳数据解析为本地日期和时间的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 VBA 中,如何以简单的方式将 UTC UNIX 时间戳转换为本地时区日期?