我正在寻找的是一种检测浏览器时区ID的方法(如Olson表中所定义),但我不关心确切的ID,我只需要一个与用户相同的时区ID (例如,如果用户在巴黎,"欧洲/罗马"很好).
我对当前的偏移不感兴趣,我真的需要时区,以便我可以将它发送到服务器进行其他日期的计算(服务器也有Olson表).
从理论上讲,由于我已经使用了Moment.js时区库并且包含了Olson表,因此我不需要任何其他内容,但我找不到任何API来进行检测.我不知道它是隐藏在某个地方还是有人已经写好了.其中一个问题是当前的时区插件似乎保持其数据私密性.
我不想要一个基于Olson表的另一个副本或提取的集成的解决方案(我必须维护),我知道有一些库重复它们,我想使用我已经拥有的那些Moment .js文件.
有时我最终会在已经调整到特定时区的网站前端显示日期时间,并且我希望无论用户的时区如何都显示它.
例如,假设我有这个日期:
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不调整用户的时区并按原样显示日期时间?
我正在尝试使用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)
我不喜欢这个,我想理解为什么它会像这样.难道我做错了什么?谁能解释一下我发生了什么?
我在我的应用程序中使用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 模拟的正确方法是什么?
希望可以有人帮帮我!我已经制定了一个包含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!只有在我开始输入内容后它才能正常工作!
我正在尝试使用Moment.js将Unix纪元时间转换为日期和时间.我也想知道如何将其格式化如下.
Tuesday, November 22, 2016 6:00 PM
我是moment.js的新手,我无法理解文档.我想以字符串格式操作一些日期.
我的日期是来自json feed的字符串,看起来像:
var year = item.date
// it returns a string like "25/04/2012"
Run Code Online (Sandbox Code Playgroud)
如何使用moment.js从中提取年份?
我有以下代码:
var fomattedDate = moment(myDate).format("L");
Run Code Online (Sandbox Code Playgroud)
有时moment(myDate).format("L")返回"无效日期",我想知道是否有办法防止这种情况并返回一个空字符串.
我有两个javascript变量:startDate和endDate.我想将当前时间(以毫秒为单位的unix时间戳)存储到endDate之前24小时的时间戳startDate.我将使用这两个变量来查询最近1天的记录.我怎么能用JS时刻做到这一点?
我经常进行单元测试,我需要比较两个矩对象。我希望我们使用 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)