标签: momentjs

Moment.js - 如何检测夏令时并添加一天

我需要从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)

javascript date momentjs

25
推荐指数
1
解决办法
4万
查看次数

如何使用Moment.js获取一个月内的天数列表

使用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,其中特定月份的总天数不是每天的数组.

javascript momentjs

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

获取Moment.js中的日,小时和分钟

所以这是我第一次使用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)

我知道我做错了(也许是我的计算或者我使用了错误的方法),但我无法弄清楚它是什么.

javascript momentjs

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

使用 jest 模拟 moment() 和 moment().format

我无法模拟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)

javascript unit-testing momentjs reactjs jestjs

25
推荐指数
4
解决办法
3万
查看次数

Moment.Js:使用UTC和时区偏移量抵消日期

我正在尝试使用时区偏移和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

javascript time date momentjs

24
推荐指数
1
解决办法
4万
查看次数

Moment.js"无效日期"

我只是尝试使用格式化日期进行文本输入.它在谷歌浏览器上运行良好,但当我在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)

有没有解决这个问题的方法?

jquery datepicker momentjs

24
推荐指数
3
解决办法
6万
查看次数

JavaScript - 检测正零和负零之间的差异

我正在使用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如何处理返回值的一个例子(我在澳大利亚,所以取决于你可能需要调整今天和明天的日期)

javascript momentjs

24
推荐指数
2
解决办法
3681
查看次数

如何在momentjs中设置日期时间

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)

在此输入图像描述

javascript time datetime date momentjs

24
推荐指数
5
解决办法
4万
查看次数

如何处理momentjs中的弃用警告

我想使用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.

momentjs

24
推荐指数
1
解决办法
2万
查看次数

在TypeScript中使用MomentJS - moment()有什么类型?

我目前正在将我的项目从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 momentprivate moment: momentWebStorm抱怨:" 找不到名称'时刻’ "

2)如果我将类型设置private moment: moment.Moment为对象已更改,我不能再调用this.moment()(它现在是一个对象,并且没有函数调用).Webstorm告诉我:" 不能调用一个类型没有呼叫签名的表达式.类型'Moment'没有可以召集的呼叫签名. "

3)我不能再使用MomentStatic,因为它不会被导出.如果我输入private moment: moment.MomentStaticWebStorm给我:" 命名空间'时刻'没有导出的成员'MomentStatic' "

那么我应该为这个例子使用什么打字?

momentjs typescript

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