我第一次和Moment.js合作.我试图找回一周中第一天的日期,而在欧洲,这通常是星期一.无论我做什么,我都会在周日的第一天得到周日.
我尝试设置不同的语言(本地或全球),但无济于事.我使用了moment.js github页面中的langs.min.js文件."en-gb"和"fr"的语言文件包含以下代码行:
dow : 1, // Monday is the first day of the week.
Run Code Online (Sandbox Code Playgroud)
所以当我要求一周的第一天正确时,我会得到星期一的日期吗?我一直把周日作为输出.
// Create moment object
var localLang = moment();
// Set language to french
localLang.lang('fr');
// Test language
localLang.lang(); // Output: fr
// Retrieve first day of the week and format it
var dow = localLang.startOf('week').format('dddd DD-MM-YYYY'); // Output: dimanche 14-04-2013
Run Code Online (Sandbox Code Playgroud)
Dimanche是星期日的法语.如你所见,moment.js可以成功使用语言文件但不使用星期几配置
JS调用moment.js和langs.js来测试: JSFiddle
编辑:我可以得到周一而不是周日的日期而day(1)不是startOf('week').但是使用day(0)我仍然得到星期天的结果.为什么不是星期一的第一天,如语言文件中所配置的那样.
我正在尝试在Google Apps脚本中使用momentjs库,但我不清楚如何这样做.我不确定如何添加库,因此显然运行如下所示的结果"参考错误:'时刻'未定义":
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var difference = a.diff(b);
Run Code Online (Sandbox Code Playgroud) 我需要转换小时和分钟的分钟值.使用纯JavaScript Date对象,我执行以下操作:
var d = new Date();
var minutes = d.getHours() * 60 + d.getMinutes();
Run Code Online (Sandbox Code Playgroud)
我刚刚切换到moment.js并寻找更好的解决方案,如下所示:
var minutes = moment(new Date()).toMinutes()
Run Code Online (Sandbox Code Playgroud)
有这样的事吗?
new Date(..).getTime()应该以毫秒为单位返回时间戳.根据momentJS的文档,表达式moment(..).valueOf()应该相同(返回给定日期的时间戳,以毫秒为单位).
我查看了以下示例数据:
var timeStampDate = new Date("2015-03-25").getTime(); //timestamp in milliseconds?
> 1427241600000
var timeStampMoment = moment("03-25-2015", "MMDDYYYY").valueOf(); //timestamp in milliseconds?
> 1427238000000
Run Code Online (Sandbox Code Playgroud)
如您所见,结果不一样.
现在我在momentJS中搜索一个函数,它返回给我与表达式完全相同的数据new Date(..).getTime().
我正面临一些试图moment.js用来处理时间偏移的问题.
我在隐藏的输入中收集本地用户时间偏移量:
<script type="text/javascript">
$(document).ready(function () {
$('input#timeoffset').val(moment().utcOffset());
});
</script>
Run Code Online (Sandbox Code Playgroud)
偏移量得到正确存储(在我的情况下,其值为-240).稍后在服务器端(在utc时间运行)我尝试更新一些db存储的utcDate做类似的事情:
var userDate = moment(utcDate).utcOffset(offset)
Run Code Online (Sandbox Code Playgroud)
我的问题如下:如果我按上述方式运行我的代码,我就没有效果:
utcDate: 20151001 012421 +0000userDate: 20151001 012421 +0000如果我翻转偏移标志,我得到:
utcDate: 20151001 012421 +0000userDate: 20151001 052421 +0400我显然做错了(即使我的期望是第一个版本是正确的),你有任何暗示吗?
在客户端,我在服务器端使用moment.js v2.10.6 moment-timezone.js v0.4.0和moment.js v2.10.6
从我之前的帖子开始:Javascript Safari:带有字符串的新Date()在键入 时返回无效日期我使用Moment.js将日期字符串转换为基于文本框中用户输入的日期字段.这是为了防止在Chrome浏览器正常时,我在Safari和Firefox的链接帖子中描述的问题无法呈现日期.这是代码片段:
var tempDate = moment(userInputFieldDate).format('DD-MM-YYYY');
alert(tempDate);
Run Code Online (Sandbox Code Playgroud)
在Chrome中,它确实工作正常(它也用于处理Javascript Date对象)但是给了我moment.js弃用警告
弃用警告:时刻构建回落到日期.这是不鼓励的,将在即将发布的主要版本中删除.有关详细信息,请参阅https://github.com/moment/moment/issues/1407.参数:[object Object]错误
在Firefox和Safari上只是在警报窗口中提供了一个未完成的日期.所以不完全确定我应该怎么做才能将日期字符串转换为Date对象.有什么建议 ?
我刚刚在我的Ember.js应用程序中将表格moment@2.1.0更新为moment@2.7.0,现在当我将moment()输入控制台或将其包含在我的脚本中时,我没有定义错误.
在文档中,我看到"从2.4.0开始,全局导出的时刻对象已被弃用".我认为这是问题,但我不确定如何在ember中设置全局矩,以便我们的代码库中对moment()的所有引用都不会被破坏.
我已经尝试将我们正在执行的行('moment')更新为var moment = require('moment'),但它具有相同的结果.即使我在var moment = ... line之后直接调试一个调试器然后在控制台中输入moment(),我仍然得到那个时刻未定义.
我目前正在使用Moment js将ISO 8601字符串解析为日期和时间,但它无法正常工作.我究竟做错了什么?我还会采取任何其他更简单的解决方案.
ISO 8601我想解析:"2011-04-11T10:20:30Z"在字符串中的日期:"2011-04-11"和字符串中的时间:"10:20:30"
并尝试console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601))并console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601])作为测试,但它只返回一个具有所有不同类型属性的对象.
我正在使用moment.js,但是当我测试moment.js库时,我继续收到错误.
var back30Days=moment().subtract(30, 'days').format("dddd, MMMM Do YYYY, h:mm:ss p");
Run Code Online (Sandbox Code Playgroud)
它返回" moment not defined."指的是.format("dddd, MMMM Do YYYY, h:mm:ss p");
我已经阅读了文档,一切看起来都很好,但是当我重新加载页面时,我正在使用的js将无法加载.
任何提示将非常感谢!
我正在使用jvandemo/generator-angular2-library作为启动器构建一个Angular(2+)组件库,它使用Rollup作为模块构建器.我在库中创建的组件使用MomentJS.
包含MomentJS后,我遇到了各种构建问题.
我首先用于import moment from 'moment';将时刻导入组件,但是在构建时会产生以下错误;
[17:26:28] Starting 'ngc'...
Error at /Users/chris/angular-library/.tmp/components/my-library/my-component.component.ts:6:8: Module '"/Users/chris/my-library/node_modules/moment/moment"' has no default export.
Run Code Online (Sandbox Code Playgroud)
我发现这个问题据说可以使用import * as moment from 'moment';我得到的;
'moment' is imported by build/components/my-component.component.js, but could not be resolved – treating it as an external dependency
events.js:182
throw er; // Unhandled 'error' event
^
Error: Cannot call a namespace ('moment')
at error (/Users/chris/angular-library/node_modules/rollup/dist/rollup.js:185:14)
Run Code Online (Sandbox Code Playgroud)
据我所知,这是唯一的两个选项,我无法工作,我错过了什么?
编辑
我已将此问题添加到库的Github存储库中,其中包含简化复制步骤