我需要从2000年以来每天每小时从日期数据字符串创建日期对象.
字符串看起来像这样每小时,Month/Day/Year Hour格式......
"04/02/2000 01", "04/02/2000 02", "04/02/2000 03" ...all the way to... "04/02/2000 24"
Run Code Online (Sandbox Code Playgroud)
现在,我有以下代码,除了夏令时的日子以外工作正常...
// Split At Space
var splitDate = "04/02/2000 24".split(/[ ]+/);
var hour = splitDate[1];
var day = splitDate[0];
// Split At Slashes
var dayArray = day.split("/");
if (hour === "24") {
// Months are zero-based, so subtract 1 from the month
date = new Date(Date.UTC( dayArray[2], parseInt(dayArray[0] - 1), dayArray[1], 0, 0, 0 ));
date.setDate(date.getDate() + 1);
} else {
// Months …Run Code Online (Sandbox Code Playgroud) 使用Moment.js我希望在一个特定年份的一个月中获得阵列中的所有日子.例如:
January-2014:
[
"01-wed",
"02-thr",
"03-fri",
"04-sat"
]
Run Code Online (Sandbox Code Playgroud)
有什么建议?我查看了Moment.js文档但找不到任何内容.我得到的衣柜是这样的:
moment("2012-02", "YYYY-MM").daysInMonth()
Run Code Online (Sandbox Code Playgroud)
但是这只返回一个int,其中特定月份的总天数不是每天的数组.
所以这是我第一次使用Moment.js,我遇到了以下问题,所以我有以下日期:
now: 2017-01-26T14:21:22+0000
expiration: 2017-01-29T17:24:22+0000
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
Day: 3
Hours: 3
Mins: 3
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码:
const now = moment();
const exp = moment(expire_date);
console.log(expire_date);
days = exp.diff(now, 'days');
hours = exp.diff(now, 'hours') - (days * 24);
minutes = exp.diff(now, 'minutes') - ((days * 1440) + (hours * 24) * 60);
Run Code Online (Sandbox Code Playgroud)
我知道我做错了(也许是我的计算或者我使用了错误的方法),但我无法弄清楚它是什么.
我无法模拟moment()或moment().format运行。我有状态在哪里,currentDateMoment并且currentDateFormatted设置如下。
currentDateMoment: moment() //2019-04-23T17:45:26.339Z
currentDateFormatted: moment().format('MM-DD-YYYY').valueOf() //"04-23-2019"
Run Code Online (Sandbox Code Playgroud)
试图在我的快照测试中模拟moment()和模拟moment().format以返回特定日期,但无法。下面试过。
jest.mock('moment', () => () => '2018–01–30T12:34:56+00:00');
jest.mock('moment', () => ({
constructor: () => '2018–01–30T12:34:56+00:00'
}));
jest.mock('moment', () => () => ({ format: () => '01–30-2018' }));
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用时区偏移和UTC时间戳来调整时间.
我正在运行以下代码:
var date = {
utc: '2013-10-16T21:31:51',
offset: -480
}
var returnDate = moment(date.utc).utc().zone(date.offset).format('MM/DD/YYYY h:mm A');
Run Code Online (Sandbox Code Playgroud)
我期待的是:10/16/2013 1:31 PM但我最终会结束10/17/2013 9:31 AM
我只是尝试使用格式化日期进行文本输入.它在谷歌浏览器上运行良好,但当我在Mozilla Firefox(26.0)上运行它时,它说:Invalid date.
您可以在两个浏览器中查看并运行我的示例,并希望能够理解该问题.
JS代码:
$( "#h_reg_date" ).datepicker();
$("#h_reg_date").datepicker("option", "dateFormat", "yy-M-dd");
$("#save_data").on("click", function(){
var reg_date = $("#h_reg_date").val();
console.log(reg_date);
reg_date = moment(reg_date).format("YYYY/MM/DD");
console.log(reg_date);
return;
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<input type="text" id="h_reg_date"class="abs" style="top:135px; left:150px;" size="10" readonly >
<input type="button" id="save_data" class="abs" style="top:370px; left:-200px;" value="Add Data">
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题的方法?
我正在使用MomentJS来计算两次之间的差异.奇怪的是这个库是今天和今天的区别是0.今天和明天的区别是-0.
我的问题是,我如何区分0和-0.似乎JavaScript对待它们是一样的.
例如,如果我编写以下代码:
if (tomorrow === -0)
console.log('It is tomorrow!');
else if (tomorrow === 0)
console.log('It is today!');
Run Code Online (Sandbox Code Playgroud)
这是关于JSFiddle如何处理返回值的一个例子(我在澳大利亚,所以取决于你可能需要调整今天和明天的日期)
momentjs是否提供了在特定时间设置时间的任何选项?
var date = "2017-03-13";
var time = "18:00";
var timeAndDate = moment(date).startOf(time);
console.log(timeAndDate);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>Run Code Online (Sandbox Code Playgroud)
我想使用momentjs来检查无效的日期/时间字符串:
var invalid = '2017-03-18 23;00;00';
if (moment(invalid).isValid()) {
return 'valid date'
}
Run Code Online (Sandbox Code Playgroud)
这(正确地)抛出了一个堆栈跟踪,其中包含熟悉的"弃用警告:提供的值不是公认的RFC2822或ISO格式......"
但即使我添加一个try/catch:
try {
var invalid = '2017-03-18 23;00;00';
if (moment(invalid).isValid()) {
return 'valid date'
}
catch (err) {
throw Error ('invalid date format');
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪仍然打印.我需要做些什么才能避免打印堆栈跟踪?
我在StackOverflow上搜索了所有类似的问题,但他们都试图解决一个不同的问题(修复输入或找到正确的语法来解析输入).
我使用的是v2.18.1.
我目前正在将我的项目从ES5转换为ES6,但我遇到了MomentJS(version 2.18.1)的问题.问题是我有一些变量是Moment对象,但是我不能在它们上面调用moment().
一个例子:
import * as moment from "moment";
export class DateThingy {
constructor(private moment) { //What type does this have??
}
public getDate(): moment.Moment {
return this.moment();
}
}
Run Code Online (Sandbox Code Playgroud)
1)如果我设置的类型private moment来private moment: momentWebStorm抱怨:" 找不到名称'时刻’ "
2)如果我将类型设置private moment: moment.Moment为对象已更改,我不能再调用this.moment()(它现在是一个对象,并且没有函数调用).Webstorm告诉我:" 不能调用一个类型没有呼叫签名的表达式.类型'Moment'没有可以召集的呼叫签名. "
3)我不能再使用MomentStatic,因为它不会被导出.如果我输入private moment: moment.MomentStaticWebStorm给我:" 命名空间'时刻'没有导出的成员'MomentStatic' "
那么我应该为这个例子使用什么打字?
momentjs ×10
javascript ×7
date ×3
time ×2
datepicker ×1
datetime ×1
jestjs ×1
jquery ×1
reactjs ×1
typescript ×1
unit-testing ×1