在couchDB映射函数中将毫秒格式化为日期

时间:2017-12-13 12:31:44

标签: javascript couchdb

我正在尝试将毫秒转换为我想要的日期格式。但是我给这个函数的格式似乎不起作用。

在我的地图功能

var date = new Date(item.showTime);
var dateString = date.toString('MM/dd/yy HH:mm:ss');
  emit([doc.vehicleNumber,doc.advertId],{"seatNumber":item.seatNumber,"showTime":dateString ,"skipTime":item.skipTime});
});

结果是

{seatNumber: 2, showTime: "Tue Nov 21 2017 10:08:56 GMT+0000 (UTC)", skipTime: 0}

我需要以 10/12/2017 10:08:56 的格式显示时间..我不知道为什么这不起作用。

  

顺便说一下这不是javascript,我认为这是关于couchdb所以请做   不要将此标记为与其他JS问题重复。

3 个答案:

答案 0 :(得分:2)

CouchDB支持在map函数定义中使用CommonJS Modules。  http://docs.couchdb.org/en/2.1.1/query-server/javascript.html#commonjs

问题是模块应该在设计文档中定义,不能从外部资源加载。

您可以在map函数中使用标准的JavaScript内置对象和函数,因为couchjs基于Mozilla的SpiderMonkey JS解释器。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

CouchDB JS运行时没有基本支持来进行日期格式化。你应该为此目的编写自己的逻辑。

如果这对您来说是一个大问题,您可能会尝试破解/path/to/couchdb/share/server/main.js文件,该文件设置了您的函数的执行上下文,但我不知道看得太多值得推荐。

答案 1 :(得分:0)

解析日期并自行格式化。这并不难。

var date = new Date(Date.parse(item.showTime));
var timestring = "" + date.getMonth() + "/" + date.getDate() + "/" + 
    date.getFullYear() + " " + date.toTimeString().substr(0,8)

答案 2 :(得分:-1)

这非常关于JavaScript。 .toString()方法不接受任何格式化参数。您可以编写自己的函数来转换输出,也可以使用a library that does what you want.