显示日期1周前和昨天的日期

时间:2014-10-13 21:59:38

标签: javascript

我正在尝试显示2个日期(当地时间),一周前的确切日期,以及昨天的确切日期,尽可能少的javascript

示例:

一周前显示为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>

1 个答案:

答案 0 :(得分: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();
};

这会得到包含日期字段的元素(标记名称为日期字段),我选择选择数据值作为属性来选择要显示的日期(因为您可以有多个周长或昨日字段)

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>

您需要使用您可能拥有的任何额外数据值属性进行编码,例如现在或将来,但在您可以执行此操作的位置应该非常明显:)