没有用moment.js增加日期

时间:2017-08-28 14:04:02

标签: javascript date momentjs

好吧,我不能用moment.js增加日期。我在我的代码中得到一个javascript日期对象,将其包装到moment函数中,计算我需要添加到初始日期的小时数,并且在我使用.add方法后没有任何反应。尝试做currentTime.add(2, 'hours')这样的事情,但也没有效果。我做错了什么?

const currentTime = moment(ioc.get<Main.IArchiveManager>("ArchiveManager").getCurrentDate());
const speed = this.getData().speed;
const distance = this.calcDistanceFromPrevPoint(initialPoint,prevPoint);
const timeToReachPoint = (distance / speed) * 60;
const estimatedTime = currentTime.add(timeToReachPoint, 'hours');
debugger;
return estimatedTime;

这是我的devtool的屏幕截图,让您知道发生了什么:enter image description here

2 个答案:

答案 0 :(得分:2)

一切都按预期工作。在更改后,您正在记录 public void SendPost(string code) { // Create the web request object HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Resource.Url); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; //Start the request webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest); } 的值。请记住currentTime更改了对象的值,它不返回副本,而是返回对象本身(为了更好的链接)。看看我的例子,你会看到来自console.log,调用两次但在不同的时间显示你期望的值。

.add()
var time = moment(new Date());
console.log(time);
time.add(2,'h');
console.log(time)

答案 1 :(得分:1)

您必须使用here(或format().toString())来显示时刻对象的值。

请注意:

  • 时刻对象是可变的,因此调用add会改变原始对象,如果需要,可以使用.toISOString()方法
  • 请勿使用clone()(前缀为_

您的代码很好,您只是以错误的方式记录时刻对象:

&#13;
&#13;
const currentTime = moment();
console.log(currentTime.format())
const speed = 0.1//this.getData().speed;
const distance = 20.56;// this.calcDistanceFromPrevPoint(initialPoint,prevPoint);
const timeToReachPoint = (distance / speed) * 60;
const estimatedTime = currentTime.add(timeToReachPoint, 'hours');
console.log(estimatedTime.format())
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;