【问题标题】:Getting today, yesterday and next days' date and switch between those获取今天、昨天和第二天的日期并在这些日期之间切换
【发布时间】:2018-01-26 07:57:15
【问题描述】:

我正在做一个日期选择器,日期选择器应该有三个部分

PREV DAY            TODAY             NEXT DAY

TODAY 最初显示今天的日期,但如果用户点击第二天,它将更改为第二天的日期。

例如

< 25th Jan 2018               26th Jan 2018           27th Jan 2018 >

当他们点击“2018 年 1 月 27 日”时,这三个部分应该会以这种方式发生变化

< 26th Jan 2018               27th Jan 2018           28th Jan 2018 >

我正在使用 Moment JS 并且到目前为止已经这样做了:

<div class="tracker-day-picker">
    <div class="adjacent-day previous-day"><span>Prev</span></div>
    <div class="day current-day"><span>Current</span></div>
    <div class="adjacent-day next-day"><span>Next</span></div> 
</div>

还有 JavaScript 代码:

$(document).ready(function(){
  var currentDate = moment();

  tracker_picker_update( currentDate );

  $(".previous-day").on("click", function(){
    currentDate = currentDate.subtract(1, "day");
    tracker_picker_update( currentDate );
  });

  $(".next-day").on("click", function(){
    currentDate = currentDate.add(1, "day");
    tracker_picker_update( currentDate );
  });

});


function tracker_picker_update( currentDate ) {
  var tracker_picker = $(".tracker-day-picker");

  // Set current Date
  tracker_picker.find(".current-day span").text( currentDate.format("DD MMM Y") );

  // Set previous Date
  tracker_picker.find(".previous-day span").text( currentDate.subtract(1, "day").format("DD MMM Y") );

  // Set Next Date
  tracker_picker.find(".next-day span").text( currentDate.add(1, "day").format("DD MMM Y") );

  return true;
}

对于某些部分,它似乎工作正常,如果我喜欢 previous-day 元素它工作正常,当天会更新为点击日期,而在 previous-day 元素中点击日期的前一天是更新。

问题发生在next-day 元素上。

这是一个例子: http://jsbin.com/yejoful

【问题讨论】:

    标签: javascript jquery date momentjs


    【解决方案1】:

    Moment 对象是可变的,因此当您使用 addsubtract 时,您会修改原始对象的值。

    您可以在使用 clone() 修改其值之前克隆时刻对象:

    所有时刻都是可变的。如果你想要一个片刻的克隆,你可以隐式或显式地这样做。

    立即调用moment() 将克隆它。

    另外,您可以拨打moment#clone克隆片刻。

    【讨论】:

    • 哇。一个简单的更改,现在一切正常。我现在正在克隆对象,当它传递给函数currentDate = currentDate.clone(); 并且一切都按预期工作时。谢谢你的指出:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多