标签: momentjs

使用Moment.js格式化日期和减去天数

我希望变量能够DD-MM-YYYY使用Moment.js 以格式保存昨天的日期.因此,如果今天是2015年4月15日,我想减去一天,并有14-4-2015.

我试过这样的几个组合:

startdate = moment().format('DD-MM-YYYY');
startdate.subtract(1, 'd');
Run Code Online (Sandbox Code Playgroud)

还有这个:

startdate = moment().format('DD-MM-YYYY').subtract(1, 'd');
Run Code Online (Sandbox Code Playgroud)

还有这个:

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY')
Run Code Online (Sandbox Code Playgroud)

但我没有得到它......

javascript date momentjs

96
推荐指数
5
解决办法
14万
查看次数

我如何在moment.js中解决可变性问题?

我遇到了一个问题,我必须存储一个时刻对象的初始值,但是我遇到了一些问题,我阻止了我的变量与原始对象一起变化.

不幸的是,Object.freeze()不起作用,因为当我尝试格式化时,moment.js返回"无效日期"错误.

javascript object immutability mutability momentjs

96
推荐指数
1
解决办法
3万
查看次数

Moment.js - 明天,今天和昨天

我喜欢这个moment().fromNow()功能,但是当日期接近时它太精确了 - 例如.我不希望它在'3小时'但'今天'显示 - 所以基本上是'每日'精度.

我尝试使用该moment().calendar()功能,如果日期差异超过1天,则不会格式化

javascript date momentjs

92
推荐指数
10
解决办法
11万
查看次数

如何仅比较moment.js中的日期

我是moment.js的新手.我有一个日期对象,它有一些时间与它相关联.我只想检查该日期是否大于或等于今天的日期,不包括比较时间.

 var dateToCompare = 2015-04-06T18:30:00.000Z
Run Code Online (Sandbox Code Playgroud)

我只想检查dateToCompare是否等于或大于今天的日期.我已经检查了is.ame of moment.js,但它似乎采取字符串,只有日期部分.但我不想将我的日期转换为字符串或进一步操纵它.因为我担心javascript可能会在将该日期转换为字符串时出现意外情况(例如添加偏移量或dst等),或者可能是我错了.

来自docs的示例isSame()

moment('2010-10-20').isSame('2010-10-20');
Run Code Online (Sandbox Code Playgroud)

此外,我正在寻找像isSame()和isAfter()这样的东西组合成一个语句.

我需要仅使用moment.js进行比较.请不要建议简单的javascript日期比较.

javascript momentjs

90
推荐指数
5
解决办法
10万
查看次数

如何在Jest中设置模拟日期?

我正在使用moment.js在我的React组件的辅助文件中执行大部分日期逻辑,但是我还没弄清楚如何在Jest a sinon.useFakeTimers()中模拟日期.

Jest文档只讨论定时器函数,如setTimeout,setInveral等,但没有帮助设置日期,然后检查我的日期函数是否执行他们想要做的事情.

这是我的一些JS文件:

var moment = require('moment');

var DateHelper = {

  DATE_FORMAT: 'MMMM D',
  API_DATE_FORMAT: 'YYYY-MM-DD',

  formatDate: function(date) {
    return date.format(this.DATE_FORMAT);
  },

  isDateToday: function(date) {
    return this.formatDate(date) === this.formatDate(moment());
  }
};

module.exports = DateHelper;
Run Code Online (Sandbox Code Playgroud)

这是我用Jest设置的:

jest.dontMock('../../../dashboard/calendar/date-helper')
    .dontMock('moment');

describe('DateHelper', function() {
  var DateHelper = require('../../../dashboard/calendar/date-helper'),
      moment = require('moment'),
      DATE_FORMAT = 'MMMM D';

  describe('formatDate', function() {

    it('should return the date formatted as DATE_FORMAT', function() {
      var unformattedDate = moment('2014-05-12T00:00:00.000Z'),
          formattedDate = DateHelper.formatDate(unformattedDate);

      expect(formattedDate).toEqual('May 12');
    });

  });

  describe('isDateToday', function() {

    it('should …
Run Code Online (Sandbox Code Playgroud)

momentjs jestjs

86
推荐指数
11
解决办法
5万
查看次数

片刻JS开始和给定月份结束

我需要计算给定年份= 2014年和月份= 9(2014年9月)的JS日期.

我试过这个:

var moment = require('moment');
var startDate = moment( year+'-'+month+'-'+01 + ' 00:00:00' );
            var endDate = startDate.endOf('month');
            console.log(startDate.toDate());
            console.log(endDate.toDate());
Run Code Online (Sandbox Code Playgroud)

两个日志都显示:

Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Run Code Online (Sandbox Code Playgroud)

结束日期是正确的但是...为什么开始日期不是?

javascript momentjs

82
推荐指数
4
解决办法
12万
查看次数

moment.js,如何获得星期数

我有一个时刻日期对象,想要获得所选的日期编号(0-6)或(1-7).

我试过这个,但它不起作用

var aaa= moment(date).day();
Run Code Online (Sandbox Code Playgroud)

请帮帮我

date momentjs

82
推荐指数
4
解决办法
14万
查看次数

如何测试变量是否是Moment.js对象?

我的应用程序有一个HTML表单,其中一些输入从后端填充,其他输入由用户time输入(在输入中).一个onChange功能通过每个输入,当用户改变一个值运行.

从后端填充的输入将转换为moment对象,用户输入的日期仅为字符串.这意味着onChange函数遇到一些moment对象和一些字符串.我需要知道哪些输入是moment对象,哪些不是.

如果变量是moment对象,测试的推荐方法是什么?

我注意到moment对象有一个_isAMomentObject属性,但我想知道是否有另一种方法来测试变量是否是一个moment对象.

我尝试过的另一个选择是moment无论如何调用变量.这会将string变量转换为moment对象,但似乎不会影响现有moment对象.

javascript momentjs

82
推荐指数
2
解决办法
3万
查看次数

使用moment.js将日期转换为字符串"MM/dd/yyyy"

我需要从jquery datepicker获取日期值将其转换为字符串格式"MM/dd/yyyy",以便它可以做正确的ajax帖子.当页面加载或更改datepicker时,会进行jquery ajax调用.

我有这个代码:

var sTimestamp =
moment($("#start_ts").datepicker("getDate")).format("MM/dd/yyyy");
Run Code Online (Sandbox Code Playgroud)

但它并没有把它变成"MM/dd/yyyy".当我使用小提琴手检查线下发送的是什么时,这就是身体:

startTimestamp=03%2FTh%2Fyyyy&endTimestamp=03%2FTh%2Fyyyy&pageSize=50&pageNum=0
Run Code Online (Sandbox Code Playgroud)

如果我在fiddler中使用compose并将body更改为:

startTimestamp=03/13/2013&endTimestamp=03/14/2013&pageSize=50&pageNum=0
Run Code Online (Sandbox Code Playgroud)

我得到了正确的答复.所以,我的问题是,是否有办法使用moment.js获取日期对象并将其格式化为字符串"MM/dd/yyyy"?或者从datepicker获取日期的方式有问题吗?

顺便说一句,我假设datepicker.getDate返回一个日期对象,因为这是jQuery文档告诉我的.

谢谢,

javascript jquery momentjs

79
推荐指数
5
解决办法
20万
查看次数

moment.js - UTC提供错误的日期

为什么moment.js UTC总是显示错误的日期.例如来自chrome的开发者控制台:

moment(('07-18-2013')).utc().format("YYYY-MM-DD").toString()
// or
moment.utc(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
Run Code Online (Sandbox Code Playgroud)

他们两人都会回归"2013-07-17",为什么它会回归17号而不是18号,这是传递给他们的.

但如果我使用没有utc的momentjs:

moment(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
Run Code Online (Sandbox Code Playgroud)

我回来了"2013-07-18",这也是我在使用moment.js UTC时所期望的.

这是否意味着我们在使用moment.js UTC时无法获得正确的日期?

javascript timezone datetime momentjs

79
推荐指数
2
解决办法
12万
查看次数