2014-10-13 5 views
0

Я пытаюсь показать 2 даты (время местное), точная дата неделю назад с сегодняшнего дня и точная дата вчера как мало JavaScript в качестве возможныхОтображение даты 1 неделю назад и Yesterdays Дата

Примеры:

неделю назад отображается как 10/07/14 и день назад отображается как 10/12/14

Я пытаюсь показать его таким образом

<p>The date a week ago was <span id="weekago"></span></p> 
     <p>The date yesterday was <span id="yesterday"></span></p> 
+3

Возможно, вы забыли указать свой код JavaScript в свой вопрос. – gilly3

ответ

0

Хотя бы еще немного JavaScript, вы могли бы сделать это как in this jsfiddle:

это помогает убрать несколько дней с даты

Date.prototype.subtractDays = function(nrOfDays) { 
    var day = 1000 * 60 * 60 * 24; 
    return new Date(this - (day * nrOfDays)); 
} 

это помогает для форматирования (пэд слева)

Object.prototype.padLeft = function(char, nr) { 
    var s = this.toString(); 
    while (s.length < nr) { 
     s = char + s; 
    } 
    return s; 
}; 

это форматы, как вы хотите

Date.prototype.formatStandard = function() { 
    return (this.getMonth() + 1).padLeft('0', 2) + '/' + 
     (this.getDate()).padLeft('0', 2) + '/' + 
     this.getFullYear(); 
}; 

, и это получает элементы, содержащие поле даты (имя тега будет datefield), и я предпочел скорее выбрать значение данных в качестве атрибута, чтобы выбрать, какую дату показывать (поскольку у вас могло бы быть более одного недельного или вчерашнего поля)

function encodeDateFields() { 
    var elems = document.getElementsByName('datefield'), i, len, item, value; 
    if (elems === null || !elems.length) { 
     alert('No fields found!'); 
     return; 
    } 
    for (i = 0, len = elems.length; i < len; i++) { 
     item = elems[i]; 
     value = item.getAttribute('data-value'); 
     switch (value) { 
      case 'weekago': 
       item.innerHTML = new Date().subtractDays(7).formatStandard(); 
       break; 
      case 'yesterday': 
       item.innerHTML = new Date().subtractDays(1).formatStandard(); 
       break; 
      default: 
       item.innerHTML = value + ' wasn\'t found!'; 
     } 
    } 
} 

и функция называется onDomReady (с jsfiddle)

encodeDateFields(); 

Я сделал следующие изменения в HTML

<p>The date a week ago was <span name="datefield" data-value="weekago"></span></p> 
<p>The date yesterday was <span name="datefield" data-value="yesterday"></span></p> 

Вы должны были бы кодировать в любой дополнительные атрибуты стоимости данных, которые у вас могут быть, например, сейчас или завтра, но это должно быть совершенно очевидно, где вы могли бы это сделать :)

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