标签: momentjs

检查 Moment.js 中的日期是否大于 0001-01-01

我有一个使用格式化日期的函数,

export function FormatDate(date: string) {
if (date != null) {
    return moment.utc(date).format('DD MMM YYYY');
}
else
    return "";
}
Run Code Online (Sandbox Code Playgroud)

但问题是空日期被接收为“0001-01-01”(DateTime Min 值)。我怎样才能用moment js检查它?

找不到直接的方法来做到这一点。以下代码有效,但很难看,

new moment("0001-01-01").format("DD MMM YYYY") == moment.utc(date).format("DD MMM YYYY")
Run Code Online (Sandbox Code Playgroud)

我收到的“日期”是“/Date(-62135596800000)/”格式。

我试过,moment.utc(date).isAfter("0001-01-01")但效果不佳,返回true。

检查序列化日期不是最小日期的最佳方法是什么?

json date-comparison momentjs

1
推荐指数
1
解决办法
6790
查看次数

显示日期和月份,根据区域设置没有年份

有没有更好的方法可以从包含位置适当分隔符的日期中只获取日期和月份?

我有一个先获取分隔符的解决方案:

 function getDateSep() {
   var temp = moment().format('L');
   var locale = moment().locale;
   var datesep = temp.substring(5, 6);
   return datesep;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样构建日期:

var sep = function getDateSep()
var date = date.format('D' + sep + 'M'+ sep)
Run Code Online (Sandbox Code Playgroud)

是否有动态构建整个日期的解决方案?

我想要达到的结果是: 31.01 (dd.mm) 31/01 (dd/mm) 01.31 (mm.dd) 01/31 (mm/dd) 等

javascript formatting localization date momentjs

1
推荐指数
1
解决办法
5875
查看次数

如何以小时为单位格式化时间大于 24 小时 AngularJS

我有一个以分钟为单位的十进制值,值为3361,需要以小时为单位进行转换并以这种格式显示:56 : 01 : 00

我试过这个代码:

$scope.myTime = new Date(1970, 0, 1).setMinutes(3361);

<input type="text" class="form-control" ng-model="myTime | date:'HH:mm:ss'">
Run Code Online (Sandbox Code Playgroud)

但结果并不如我所料:08 : 01 : 00

javascript time-format angularjs momentjs

1
推荐指数
1
解决办法
5298
查看次数

将单独的日期和时间转换为一个格式为 moment js 的字符串

我正在使用moment js和 new 。所以现在我将时间和日期从 html 分离到 javascript 控制器,所以我想在 moment js 中转换为一个具有格式的字符串。

console.log($scope.timeTo);
console.log($scope.dateTO);
Run Code Online (Sandbox Code Playgroud)

控制台输出:

04:00
23/05/2017
Run Code Online (Sandbox Code Playgroud)

但是我想和momentjs一起设置时间和日期。所需格式:

2017-05-23T04:00:00
Run Code Online (Sandbox Code Playgroud)

javascript momentjs

1
推荐指数
1
解决办法
1829
查看次数

MomentJS + VueJS:获取从现在到过去某个时间点的相对时间

我使用 MomentJS。

在我的 VueJS 代码中,我想获得从现在到过去那个点的相对时间。在我的模板中,我合并了这段 JavaScript 的结果:

<template>
  <div>{{ moment(message.createdAt, 'YYYYMMDD').fromNow() }}</div>
</template>
Run Code Online (Sandbox Code Playgroud)

对象接收日期如下:

message: { createdAt: Date.now() }
Run Code Online (Sandbox Code Playgroud)

结果总是:a few seconds ago...

我怎样才能得到正确的结果(并不总是“几秒钟前”):

编辑:

这是我的完整模板:

<template v-for="message in messages">
  <div class="message">
    <div class="text">{{ message.text }}</div>
    <div class="date">{{ moment(message.createdAt).format('D.M.YYYY') }}</div>
    <div class="date">{{ moment(message.createdAt).fromNow() }}</div>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

momentjs vue.js

1
推荐指数
1
解决办法
4223
查看次数

从时间戳转换为前一天返回的时刻

我正在尝试将时间戳转换为 moment js 对象,如下所示:

let obj = moment.unix(1459382400);
Run Code Online (Sandbox Code Playgroud)

它返回 Wed Mar 30 2016 20:00:00 GMT-0400 (CDT) 这是错误的,因为给定的时间戳对应于 Thu, 31 Mar 2016 00:00:00 GMT。

我错过了什么吗?我究竟做错了什么?

javascript momentjs

1
推荐指数
1
解决办法
1337
查看次数

使用 moment JS 将美国中部时间转换为不同的时区

我在美国中部时区 (CDT)有一个日期时间(2017 年 10 月 27 日星期五凌晨 4:00:00)。我想将此日期时间转换为不同的时区。这些是我想转换的时区。

Eastern Time (EDT)
Pacific Time (PDT)
New Delhi, India (IST)
Central Europian Time (CET)
Riyadh, Saudi Arabia (AST)
Pakistan Standard Time (PKT)
Lagos, Nigeria (WAT)
Australian Standard Time (AET)
Greenwich Mean Time (GMT)
Moscow, Russia (MSK)
China Standard Time (CST)
Run Code Online (Sandbox Code Playgroud)

这就是我正在做的

 var dateTime = moment.tz("2017-10-27 4:00:00 AM", "America/Chicago");
 var IST = dateTime.tz('Asia/Calcutta').format('MMMM Do YYYY, h:mm:ss a');
 console.log(IST) // October 27th 2017, 9:30:00 am 
Run Code Online (Sandbox Code Playgroud)

返回的日期时间错误。因为印度标准时间比中部时间早 10 小时 30 分钟。 …

timezone momentjs

1
推荐指数
1
解决办法
4869
查看次数

使用 Moment.js 在当前时间前 24 小时/1 天获取时间

要以UTC格式获取当前时间,我可以使用

moment.utc().format("YYYY-MM-DD HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

现在,在 Moment.js 中,我如何以相同的格式获取时间,但在此之前 24 小时?

javascript momentjs

1
推荐指数
1
解决办法
5805
查看次数

时刻 - 获得一个月中的第一个和最后一周(整周)

我需要编写一个简单的代码,但语法有问题。

我需要用 moment.js 对象填充一个数组。此数组包含两个日期之间的所有天数。这是我实现这一目标的逻辑。

  • 获取一个月第一周的星期一(在本例中为 26/02)。
  • 获取一个月最后一周的星期日(在本例中为 (01/04)。
  • while 循环将日期推送到我的数组中。

目前这是我想出的(但它不起作用)。

let start = this.currentDate.startOf("month").startOf("isoWeek");
let end = this.currentDate.endOf("month").endOf("isoWeek");
while (start.isSameOrBefore(end)) {
    this.month.push(start);
    start.add(1, "days");
}
Run Code Online (Sandbox Code Playgroud)

这会导致我的应用程序崩溃。当我记录我的start&end我看到这两天都是一样的。

Sun Mar 04 2018 23:59:59 GMT+0100 (Romance Standard Time)

我假设我的语法是错误的,但我无法弄清楚是什么。

javascript momentjs

1
推荐指数
1
解决办法
1798
查看次数

moment().add 更改先前设置的变量

我应该返回两个变量的函数,thisYearnextYear当我通过一个日期的功能。但是,当我调用它时.adddate它正在更改thisYear即使thisYear已经设置的值。

函数和调用

http://jsfiddle.net/rLjQx/29945/

var someDate = moment()
thisYearAndNextYear(someDate)

function thisYearAndNextYear(date) {
  const thisYear = date
  console.log("thisYear = " + thisYear);
  const nextYear = date.add(1, 'year')
  console.log("nextYear = " + nextYear);
  console.log("thisYear (after nextYear set) = " + thisYear);
}
Run Code Online (Sandbox Code Playgroud)

输出

thisYear = 1522021438255
nextYear = 1553557438255
thisYear (after nextYear set) = 1553557438255  // ISSUE: this should still be 1522021438255
Run Code Online (Sandbox Code Playgroud)

有谁知道如何防止这种奇怪的行为以thisYear保留其初始值?

javascript momentjs

1
推荐指数
1
解决办法
446
查看次数