Javascript时间范围
<小时/> 我正在尝试编写一个Node应用程序,该应用程序根据等于当前工作周开始和结束的时间范围从MySQL获取数据条目。
这是Node-MySQL查询:
function retrieveSales(){
connection.query('select * from sales_entries where date BETWEEN ? AND ?',
timeFrame,
function (err, rows, fields) {
var sales = new Array();
for (x=0;x<rows.length;x++){
sales.push(rows[x]);
}
return sales;
});
}
其中timeFrame
是一个包含datetime
格式的两个日期的数组,这是MySQL默认提供的第二个特定时间数据类型。 (2010年12月31日03:55)
问题是,我从未在JS中使用过多的日期。所以我有两个问题:
将不同的日期格式记录到数据库或日期时间是否更好?
我应该如何生成此数组,其值分别等于当前工作周(星期一)第一天的开始和当前工作周(周五)的最后一天的结束?
小提琴
Here's the JSFiddle,包括三个功能;执行查询的retrieveSales
dateTime()
,以datetime格式返回当前时间,retrieveData
是调用所有必要查询的主要函数。
答案 0 :(得分:0)
一般情况下,我会说在您的数据库和其他任何地方使用ISO8601格式并http://momentjs.com/docs/来处理您的日期。
尽管如此,你仍然可以像你一样使用日期时间字符串,只需解析一下&#39;使用自定义格式字符串。
// parse from string, see docs for format
var t = moment('31/12/2010 03:55 AM', "DD/MM/YYYY hh:mm A");
// ISO-8601
t.format()
// and back to that MySQL format
t.format("DD/MM/YYYY hh:mm A");
您可以对t
(比较,突变,格式化)进行大量计算,只需查看momentjs文档即可。
编辑:更具体地说,填充timeFrame
可以如下:
// from sun to saterday of this week
var timeFrame = [ moment().days(0).format("DD/MM/YYYY hh:mm A")
, moment().days(6).format("DD/MM/YYYY hh:mm A") ];
// or since method.days() wraps around, this is monday-sunday
var timeFrame = [ moment().days(1).format("DD/MM/YYYY hh:mm A")
, moment().days(7).format("DD/MM/YYYY hh:mm A") ];
HTH