标签: momentjs

使用moment.js检测当前用户时区的ID

我正在寻找的是一种检测浏览器时区ID的方法(如Olson表中所定义),但我不关心确切的ID,我只需要一个与用户相同的时区ID (例如,如果用户在巴黎,"欧洲/罗马"很好).

我对当前的偏移不感兴趣,我真的需要时区,以便我可以将它发送到服务器进行其他日期的计算(服务器也有Olson表).

从理论上讲,由于我已经使用了Moment.js时区库并且包含了Olson表,因此我不需要任何其他内容,但我找不到任何API来进行检测.我不知道它是隐藏在某个地方还是有人已经写好了.其中一个问题是当前的时区插件似乎保持其数据私密性.

想要一个基于Olson表的另一个副本或提取的集成的解决方案(我必须维护),我知道有一些库重复它们,我想使用我已经拥有的那些Moment .js文件.

javascript timezone momentjs

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

使用没有时区转换的MomentJs显示日期时间

有时我最终会在已经调整到特定时区的网站前端显示日期时间,并且我希望无论用户的时区如何都显示它.

例如,假设我有这个日期:

2015-01-22T16:11:36.36-07:00

-07:00表示它在山区时间,MomentJs知道这一点,并将自动调整其他时区的用户.例如,假设我使用以下代码显示日期时间:

moment('2015-01-22T16:11:36.36-07:00').format('l LT')
Run Code Online (Sandbox Code Playgroud)

中心时间(-06:00)的用户将看到时间为下午5:11而不是下午4:11.如何告诉MomentJs不调整用户的时区并按原样显示日期时间?

javascript momentjs

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

momentJS上的打字稿模块系统行为奇怪

我正在尝试使用typescript中的momentJs:取决于我用来编译typescript的模块系统,我发现了一个不同的行为,我可以使用momentJs.使用commonJs编译typescript时,一切都按预期工作,我可以按照momentJs文档:

import moment = require("moment");
moment(new Date()); //this works
Run Code Online (Sandbox Code Playgroud)

如果我在导入"时刻"时使用"system"作为打字稿模块系统,我不得不这样做

import moment = require("moment");
moment.default(new Date()); //this works
moment(new Date()); //this doesn't work
Run Code Online (Sandbox Code Playgroud)

我发现了一种解决方法,无论使用哪种打字稿模块系统,它们都能正常工作

import m = require("moment")
var moment : moment.MomentStatic;
moment = (m as any).default || m;
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个,我想理解为什么它会像这样.难道我做错了什么?谁能解释一下我发生了什么?

commonjs momentjs typescript systemjs

20
推荐指数
3
解决办法
7257
查看次数

茉莉花约会与moment.js嘲笑

我在我的应用程序中使用moment.js作为日期/时间,但似乎它与Jasmine的模拟功能不相符.我在下面放了一个测试套件,显示我的问题:

jasmine.clock().mockDate似乎暂时没有工作,而它的工作正常Date.

describe('Jasmine tests', function () {
    beforeEach(function() {
        jasmine.clock().install();
    });

    afterEach(function() {
        jasmine.clock().uninstall();
    });

    // Pass
    it('uses the mocked time with Date', function() {
        var today = new Date('2015-10-19');
        jasmine.clock().mockDate(today);
        expect(new Date().valueOf()).toEqual(today.valueOf());
    });


    // Fail
    it('uses the mocked time with moment', function() {
        var today = moment('2015-10-19');
        jasmine.clock().mockDate(today);

        expect(moment().valueOf()).toEqual(today.valueOf());
    });
});
Run Code Online (Sandbox Code Playgroud)

为什么没有Date按预期工作moment?是不是在引擎盖下moment使用Date

moment使用Jasmine 模拟的正确方法是什么?

javascript jasmine momentjs

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

Vue js在输入字段中对v模型应用过滤器

希望可以有人帮帮我!我已经制定了一个包含Jasny Bootstrap插件的指令,更具体地说是输入掩码的东西,一切顺利!

现在我已经制作了一个自定义过滤器,以便格式化日期字段!

我从我的后端应用程序收到的日期格式是YYY-MM-DD,我必须在视图上显示为DD/MM/YYYY ...我已经尝试v-model="date | myDate"但它无法正常工作!

JS

Vue.directive('input-mask', {
  params: ['mask'],

  bind: function() {
    $(this.el).inputmask({
      mask: this.params.mask
    });

  },
});

Vue.filter('my-date', function(value, formatString) {

  if (value != undefined)
    return '';

  if (formatString != undefined)
    return moment(value).format(formatString);

  return moment(value).format('DD/MM/YYYY');

});

var vm = new Vue({
  el: 'body',
  data: {
    date: '2015-06-26',
  }
});
Run Code Online (Sandbox Code Playgroud)

HTML

<label>Date</label>
<input type="text" class="form-control" v-input-mask mask="99/99/9999" v-model="date">
<p>{{ date | myDate 'dd/mm/yyyy' }}</p>
Run Code Online (Sandbox Code Playgroud)

如果有人有兴趣,有JSBin!

提前致谢!

编辑:更好地解释我的期望=)

当页面首次加载输入时收到2015-06-26的值,我想将该值显示为DD/MM/YYYY所以26/06/2015!只有在我开始输入内容后它才能正常工作!

javascript jquery date momentjs vue.js

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

使用Moment.js将Unix纪元时间转换为人类可读时间

我正在尝试使用Moment.js将Unix纪元时间转换为日期和时间.我也想知道如何将其格式化如下.

Tuesday, November 22, 2016 6:00 PM

javascript epoch node.js momentjs

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

时刻js从字符串中提取年份

我是moment.js的新手,我无法理解文档.我想以字符串格式操作一些日期.

我的日期是来自json feed的字符串,看起来像:

var year = item.date
// it returns a string like "25/04/2012"
Run Code Online (Sandbox Code Playgroud)

如何使用moment.js从中提取年份?

javascript date momentjs

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

Momentjs:如何防止"无效日期"?

我有以下代码:

var fomattedDate = moment(myDate).format("L");
Run Code Online (Sandbox Code Playgroud)

有时moment(myDate).format("L")返回"无效日期",我想知道是否有办法防止这种情况并返回一个空字符串.

javascript invalidation momentjs

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

如何使用Moment JS获得时间

我有两个javascript变量:startDateendDate.我想将当前时间(以毫秒为单位的unix时间戳)存储到endDate之前24小时的时间戳startDate.我将使用这两个变量来查询最近1天的记录.我怎么能用JS时刻做到这一点

javascript datetime momentjs

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

如何让 Jest 自定义匹配器在打字稿中工作?

我经常进行单元测试,我需要比较两个矩对象。我希望我们使用 moment 的内置函数 moment.isSame(moment) 来比较它们。但是,这意味着我的断言将如下所示:

expect(moment1.isSame(moment2)).toBeTrue();

我不太喜欢这个,特别是因为失败消息的信息量会较少。因此,我想编写一个自定义的笑话匹配器“toBeSameMoment”。以下代码似乎至少可以编译:

import moment from "moment";

declare global {
  namespace jest {
    interface MomentMatchers extends Matchers<moment.Moment> {
      toBeSameMoment: (expected: moment.Moment) => CustomMatcherResult;
    }
  }
}

expect.extend({
  toBeSameMoment(received: moment.Moment, expected: moment.Moment): jest.CustomMatcherResult {
    const pass: boolean = received.isSame(expected);
    const message: () => string = () => pass ? "" : `Received moment (${received.toISOString()}) is not the same as expected (${expected.toISOString()})`;

    return {
      message,
      pass,
    };
  },
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法真正让它在我的单元测试中工作......当我尝试以下测试代码时:

import moment from "moment";
import "../jest-matchers/moment";

describe("Moment matcher", …
Run Code Online (Sandbox Code Playgroud)

matcher momentjs typescript jestjs ts-jest

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