Javascript Node.js和csv express日期格式
使用csv express导出到csv时,是否有方法格式化日期“YYYY-MM-DD”?我在谷歌上搜索了很长时间,但什么也没找到。我使用的是Node.js、Express和MongoDB的最新版本 这是默认日期格式:“2018年8月9日星期四00:00:00 GMT-0700(太平洋夏令时)”。我只想要这个“2018-09-09” 我的问题是:Javascript Node.js和csv express日期格式,javascript,node.js,express,Javascript,Node.js,Express,使用csv express导出到csv时,是否有方法格式化日期“YYYY-MM-DD”?我在谷歌上搜索了很长时间,但什么也没找到。我使用的是Node.js、Express和MongoDB的最新版本 这是默认日期格式:“2018年8月9日星期四00:00:00 GMT-0700(太平洋夏令时)”。我只想要这个“2018-09-09” 我的问题是: router.get('/exportMonthlyPosts', (req, res) => { posts.find({...}, {i
router.get('/exportMonthlyPosts', (req, res) => {
posts.find({...}, {id:1, title:1, post:1, postedOn:1}).sort(orderBy).lean()
.then(post => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/csv');
res.setHeader("Content-Disposition", 'attachment; filename=posts.csv');
res.csv(report, true);
});
});
样本数据:
[
{
_id: 5b64c23eef5b9c5c60fa42a0,
title: 'Test Post',
post: 'Show me the money!',
postedOn: 2018-08-29T00:00:00.000Z
},
{
_id: 5afb58408341f161a0c96608,
title: 'Test Post 2',
post: 'Show me the money!',
postedOn: 2018-08-29T00:00:00.000Z
}
]
谢谢大家! 你试过这个吗<代码>时刻JS 这是一个很酷的模块 你可以这样做
router.get('/exportMonthlyPosts', (req, res) => {
posts.find({...}, {id:1, title:1, post:1, postedOn:1}).sort(orderBy).lean()
.then(post => {
// update postedOn.
report.forEach((r) => {
r.postedOn = moment(r.postedOn).format("YYYY-MM-DD")
});
res.statusCode = 200;
res.setHeader('Content-Type', 'text/csv');
res.setHeader("Content-Disposition", 'attachment; filename=posts.csv');
res.csv(report, true);
});
});
你试过这个吗<代码>时刻JS 这是一个很酷的模块 你可以这样做
router.get('/exportMonthlyPosts', (req, res) => {
posts.find({...}, {id:1, title:1, post:1, postedOn:1}).sort(orderBy).lean()
.then(post => {
// update postedOn.
report.forEach((r) => {
r.postedOn = moment(r.postedOn).format("YYYY-MM-DD")
});
res.statusCode = 200;
res.setHeader('Content-Type', 'text/csv');
res.setHeader("Content-Disposition", 'attachment; filename=posts.csv');
res.csv(report, true);
});
});
您可以将
报告
转换为新数据,其中所有日期均替换为字符串:
const transformed = report.map(line => Object.entries(line).reduce((acc, [key, val]) => {
acc[key] = val instanceof Date ? moment(val).format("YYYY-MM-DD") : val;
return acc;
}, {}));
然后只需使用
transformed
而不是report
即可将报告
转换为一个新数据,其中所有日期都由字符串替换:
const transformed = report.map(line => Object.entries(line).reduce((acc, [key, val]) => {
acc[key] = val instanceof Date ? moment(val).format("YYYY-MM-DD") : val;
return acc;
}, {}));
然后使用
transformed
而不是report
只需在导出数据之前对其进行转换。嗨,勒克斯,谢谢您的回复。我正在学习node.js,你能提供同样的代码吗?我将更新我的问题以包含我的查询。可能会显示您的代码如何导出。请查看更新的问题,谢谢。只需在导出数据之前转换数据。嗨,勒克斯,谢谢您的回复。我正在学习node.js,你能提供同样的代码吗?我将更新我的问题以包含我的查询。可能会显示您的代码如何导出它。请查看更新的问题,谢谢。嗨,seunggabi,我目前正在该项目中使用矩.js。我尝试过这样做(moment(newdate(postedOn).format(“YYYY-MM-DD”):1)在我的选择中,但它不起作用。我是Node.js新手,不太确定在哪里应用你的建议。如果你能提供示例代码,我将不胜感激。好的,请在你的代码中向我提供关于post
的详细信息。我不知道post-json。谢谢你,这对我来说是完美的工作。谢谢你的示例!嗨seunggabi,我是目前正在这个项目中使用moment.js。我尝试过这样做(moment(newdate(postedOn).format(“YYYY-MM-DD”):1)在我的选择中,但它不起作用。我是Node.js新手,不太确定在哪里应用你的建议。如果你能提供示例代码,我将不胜感激。好的,请在你的代码中向我提供关于post
的详细信息。我不知道post-json。谢谢你,这对我来说非常有用。谢谢你的示例!