我希望变量能够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)
但我没有得到它......
我遇到了一个问题,我必须存储一个时刻对象的初始值,但是我遇到了一些问题,我阻止了我的变量与原始对象一起变化.
不幸的是,Object.freeze()不起作用,因为当我尝试格式化时,moment.js返回"无效日期"错误.
我喜欢这个moment().fromNow()功能,但是当日期接近时它太精确了 - 例如.我不希望它在'3小时'但'今天'显示 - 所以基本上是'每日'精度.
我尝试使用该moment().calendar()功能,如果日期差异超过1天,则不会格式化
我是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日期比较.
我正在使用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) 我需要计算给定年份= 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)
结束日期是正确的但是...为什么开始日期不是?
我有一个时刻日期对象,想要获得所选的日期编号(0-6)或(1-7).
我试过这个,但它不起作用
var aaa= moment(date).day();
Run Code Online (Sandbox Code Playgroud)
请帮帮我
我的应用程序有一个HTML表单,其中一些输入从后端填充,其他输入由用户time输入(在输入中).一个onChange功能通过每个输入,当用户改变一个值运行.
从后端填充的输入将转换为moment对象,用户输入的日期仅为字符串.这意味着onChange函数遇到一些moment对象和一些字符串.我需要知道哪些输入是moment对象,哪些不是.
如果变量是moment对象,测试的推荐方法是什么?
我注意到moment对象有一个_isAMomentObject属性,但我想知道是否有另一种方法来测试变量是否是一个moment对象.
我尝试过的另一个选择是moment无论如何调用变量.这会将string变量转换为moment对象,但似乎不会影响现有moment对象.
我需要从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文档告诉我的.
谢谢,
为什么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时无法获得正确的日期?
momentjs ×10
javascript ×8
date ×3
datetime ×1
immutability ×1
jestjs ×1
jquery ×1
mutability ×1
object ×1
timezone ×1