2014-03-23 3 views
0

Javascript Временных рамокВременных рамок текущего Workweek в DATETIME


Я пытаюсь написать приложение Node, который захватывает запись данных из MySQL на основе временных рамок, равных начало и конец текущая рабочая неделя.


Вот узел 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 предлагает по умолчанию. (31/12/2010 03:55 AM)


Проблема в том, что я никогда не работал с датами в JS. Поэтому у меня есть два вопроса:

  1. Будет ли лучше записывать другой формат даты в базу данных или отлично подходит для datetime?

  2. Как создать этот массив со значениями, равными началу первого дня текущей рабочей недели (понедельника) и концу последнего дня текущей рабочей недели (в пятницу) соответственно?


скрипку

Here's the JSFiddle, в том числе три функции; retrieveSales, который выполняет запрос, dateTime(), возвращая текущее время в формате даты и времени и retrieveData, который является основной функцией, которая будет вызывать все необходимые запросы.

ответ

0

В целом, я бы сказал, использую формат ISO8601 в вашей базе данных и везде и http://momentjs.com/docs/, чтобы иметь дело с вашими датами.

Тем не менее, вы можете работать с строкой времени даты, как и у вас, просто проанализируйте «момент», используя строку пользовательского формата.

// 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"); 

Вы можете сделать много computerations на t (сравнения, мутации, форматирование), просто проверить momentjs документов.

Edit: более конкретно, заполнение 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

+1

Научи человека ловить рыбу, не так ли? Спасибо. Этот инструмент очень полезен. –

+0

добавил кое-что, что поможет вам – wires

Смежные вопросы