其他一些开发者为 Moment.js 制作了插件,可能对你有用。
strftime
npm install moment-strftime
如果你更习惯使用 strftime 而不是类似 LDML 的解析令牌,则可以使用 Ben Oakes 的插件 moment-strftime
。
该仓库位于 github.com/benjaminoakes/moment-strftime。
msdate
如果你在 .NET 中使用 OLE Automation 日期,则查看 Markit On Demand 的 moment-msdate
。 使用此插件,可以将 OA 日期格式化为 JavaScript 日期,反之亦然。
将 moment
转换为 OA 日期:
moment().toOADate(); // 浮点数
或者,将 OA 日期转换为 moment
:
moment.fromOADate(41493); // Wed Aug 07 2013 00:00:00 GMT-0600 (MDT)
更多信息和详细文档可以在 GitHub 上找到 http://markitondemand.github.io/moment-msdate/。
jdateformatparser
npm install moment-jdateformatparser
如果要使用 java.text.DateFormat
,可以使用此插件。
例如,
moment("2013-12-24 14:30").formatWithJDF("dd.MM.yyyy"); // 返回格式化的日期 "24.12.2013"
moment().toJDFString("DD.MM.YYYY"); // 返回 Java 的格式模式 "dd.MM.yyyy"
该仓库位于 github.com/MadMG/moment-jdateformatparser。
range
npm install moment-range
如果需要处理日期范围,则可以使用 Gianni Chiappetta 的插件 moment-range
。
文档可以在主页 github.com/rotaready/moment-range 上找到。
也可以在下面的仓库中通过 Web 进行访问。
该仓库位于 github.com/rotaready/moment-range。
twix
npm install twix
另一个范围插件是 Isaac Cambron 的库 Twix
。 它具有许多与范围相关的特性,并且擅长格式化范围。 例如,
var t = moment("1/25/1982 9:30 AM").twix("1/25/1982 1:30 PM");
t.isCurrent(); // false
t.count('minutes'); // 241
t.format(); // 'Jan 25, 1982, 9:30 AM - 1:30 PM'
t.simpleFormat("h:m"); // '9:30 - 1:30'
所有选项和特性的完整文档在这里。
像这样在 npm 上可用:
npm install twix
或者只是从这里获取 JS 文件。
precise-range
npm install moment-precise-range-plugin
由 Rob Dawson 编写的 Precise Range 插件可用于显示日期/时间范围的准确的人类可读的表示形式:
moment("2014-01-01 12:00:00").preciseDiff("2015-03-04 16:05:06");
// 1 year 2 months 3 days 4 hours 5 minutes 6 seconds
moment.preciseDiff("2014-01-01 12:00:00", "2014-04-20 12:00:00");
// 3 months 19 days
要获取原始数字值而不是字符串,则将 true
值作为第三个参数传给该方法:
moment.preciseDiff(m1, m2, true);
// {years : 0, months : 1, days : 2, hours : 3, minutes : 4, seconds : 5, firstDateWasLater : false}
isocalendar
npm install moment-isocalendar
如果你正在寻找类似 Python 的 isocalendar 方法,则可以使用 Rocky Meza 的插件
moment-isocalendar
在 moment 上调用 isocalendar 方法将会返回如下数组:
[year, week_of_year, day_of_week, minutes_since_midnight]
moment().isocalendar(); // [2012, 8, 5, 870]
还可以从 isocalendar 数组重造 moment。
moment.fromIsocalendar([2011, 51, 5, 870]).format('LLLL');
// "Friday, December 23 2011 2:30 PM"
该仓库位于 github.com/fusionbox/moment-isocalendar。
jalaali
npm install moment-jalaali
如果要使用 Jalaali 日历系统(Jalali、Persian、Khorshidi 或 Shamsi),则可以使用 Behrang Noruzi Niya 的插件 moment-jalaali
。
当安装后,它会封装 moment
,且 moment 将可以格式化和解析 Jalaali 的年月。 这是一个简短的示例:
var m = moment('1360/5/26', 'jYYYY/jM/jD'); // 解析 Jalaali 日期。
m.format('jYYYY/jM/jD [is] YYYY/M/D'); // 1360/5/26 is 1981/8/17
该仓库位于 github.com/behrang/moment-jalaali。
hijri
npm install moment-hijri
如果要使用 Hijri 日历,则可以使用 moment-hijri
插件。 moment-hijri
是基于 Umm al-Qura 计算得出的 Hijri 阴历的 moment 插件。 该插件由 Suhail Alkowaileet 开发。
当安装时,它将会封装 moment
,且你将可以解析 Hijri 日期。 这是一个简短的示例:
m = moment('1410/8/28', 'iYYYY/iM/iD'); // 解析 Hijri 日期。
m.format('iYYYY/iM/iD [is] YYYY/M/D'); // 1410/8/28 is 1990/3/25
该仓库位于 github.com/xsoh/moment-hijri.
islamic-civil
npm install moment-islamic-civil
这是另一个 Hijri 日历(基于民间计算)。
该仓库位于 github.com/ACGC/moment-islamic-civil。
recur
npm install moment-recur
如果需要处理重复的日期,则可以使用 Casey Trimm 的插件 moment-recur
。
此插件将会允许你创建基于长度的间隔(天、周等)和基于日历的间隔(月份的日期、年份的月份等)。
它提供了一个 matches
函数来测试日期是否根据规则集重现,还提供了生成器函数来获取系列中的下一个和上一个日期。
仓库、文档和更多示例可以在 github.com/c-trimm/moment-recur 上找到。
var interval = moment( "01/01/2014" ).recur().every(2).days(); // 长度间隔
interval.matches( "01/03/2014" ); // true
interval.next( 2, "L" ); // ["01/03/2014", "01/05/2014"]
interval.forget( "days" ); // 删除规则
interval.dayOfMonth( 10 ); // 日历间隔
interval.matches( "05/10/2014" ); // true
interval.previous( 2, "L" ); // ["12/10/2013", "11/10/2013"]
如果想尝试像 Twitter 一样格式化推文的时间,则可以使用 @hijonathan 的 moment.twitter 插件。
这是显示人类可读的时间戳的长短版本的简单方法。
moment().subtract(5, 'hours').twitterLong();
// 5 hours
是的,它可以进行智能多元化。
moment().subtract(1, 'hour').twitterLong();
// 1 hour
还不够短吗?
moment().subtract(6, 'days').twitterShort();
// 6d
fquarter
如果需要财政、日历或学术季度,可以使用 @robgallen 的 moment-fquarter 插件。
最简单的是,只需在任何 moment 对象上调用 fquarter 方法。 它返回格式化的字符串,其中四月是第一季度。
moment("2013-01-01").fquarter();
// Q4 2012/13
可以将任何月份作为起始季度,例如七月:
moment("2013-01-01").fquarter(7);
// Q3 2012/13
如果需要日历季度,则从一月开始:
moment("2013-01-01").fquarter(1);
// Q1 2013
parseformat
npm install moment-parseformat
该插件提取日期/时间字符串的格式。
var format = moment.parseFormat('Thursday, February 6th, 2014 9:20pm');
// dddd, MMMM Do, YYYY h:mma
moment().format(format); // 格式化
这样就可以创建智能日期输入,让用户设置日期/时间,并提取用户的首选格式以供将来使用。 在 minutes.io 上找到其用法示例。
round
npm install moment-round
For example, 该插件会将日期/时间四舍五入到给定的时间间隔。
例如,
require('moment-round');
var m = new moment(); // 2015-06-18 15:30:19
m.round(5, 'seconds'); // 2015-06-18 15:30:20
m.ceil(3, 'minutes'); // 2015-06-18 15:33:00
m.floor(16, 'hours'); // 2015-06-18 00:00:00
m.ceil(21, 'hours'); // 2015-06-18 21:00:00
m.ceil(20, 'hours'); // 2015-06-19 00:00:00
该仓库位于 github.com/WebDevTmas/moment-round。
transform
bower install moment-transform
moment-transform
是一个通过模式操作日期的插件。 可以对 Moment 实例的各个部分(小时、月份等)使用基本操作(设置/添加/减少)。
moment().transform('YYYY-MM-+01 00:00:00.000'); // Tonight at midnight
moment().transform('14:30:00.000'); // Today, 2:30 pm
moment().transform('YYYY-MM--30 00:00:00.000'); // 30 days ago
可选的参数可以指定自定义的模式并强制使用严格的模式(默认情况下,在传入的字符串中非字母字符不是必需的)。
moment().transform('+01MMYYYY', 'DD/MM/YYYY', false); // Tomorrow, same time
moment().transform('+01MMYYYY', 'DD/MM/YYYY', true); // Invalid date
taiwan
npm install moment-taiwan
如果要使用台湾日历系统,可以使用 Bradwoo8621 的插件 moment-taiwan
。
当安装后,它将会可以封装 moment
,且将可以格式化和解析台湾年份。 这是一个简短的示例:
m = moment('104/01/01', 'tYY/MM/DD') // 解析 Taiwan 日期
m.format('tYY/MM/DD [is] YYYY/M/D') // 104/01/01 is 2015/01/01
m.twYear() // 104
该仓库位于 github.com/bradwoo8621/moment-taiwan。
duration-format
npm install moment-duration-format
这是一个插件,将会允许对 Moment 时长进行全面格式化。
例如,
moment.duration(123, "minutes").format("h:mm");
// "2:03"
该仓库位于 github.com/jsmreese/moment-duration-format。
timer
npm install moment-timer
这是一个 Moment.js 插件,允许使用计时器,该计时器比原生的 JavaScript 计时器提供更多的控制权。 基本上,这是对 JavaScript 自有的 setInterval 和 setTimeout 的重写。
例如,
var timer = moment.duration(5, "seconds").timer({loop: true}, function() {
// 回调
});
该仓库位于 github.com/SeverinDK/moment-timer。
npm install moment-business
business
这是一个 Moment.js 库,允许 Moment 在西方工作周中进行操作:7 天工作周,其中周六和周日为非工作日。
例如,
import business from 'moment-business';
// 如果 moment 是周一至周五,则为 true,否则为 false。
business.isWeekDay(someMoment);
// 增加五个工作日到 Moment。
business.addWeekDays(someMoment, 5);
该仓库位于 github.com/jmeas/moment-business。
shortformat
如果要以较短的方式格式化时间,可以使用 @researchgate 的 moment-shortformat 插件。
它基于和类似于 moment.twitter 插件,但输出不同。
moment().subtract(5, 'hours').short();
// 5h ago
moment().add(5, 'hours').short();
// in 5h
您还可以禁用相对时间模板的使用:
moment().subtract(1, 'hour').short(false);
// 1h
如果该日期在将来或过去过长,它将会显示为:
moment().subtract(500, 'days').short();
// 5 Mar, 1970
feiertage
npm install moment-feiertage --save
这个 moment-feiertage 是一个 Moment.js 插件,用于确定日期是否为德国假期。 假期取自维基百科(德国)。 确定日期是否为假日有点复杂,因为宗教节日每年变化,在德国的 16 个州内也不同。
由 DaniSchenk 创建。
var someDateInSomeStates = moment('2018-11-01').isHoliday(['BW', 'SH', 'TH']);
/* returns {
allStates: false,
holidayName: 'Allerheiligen',
holidayStates: [ 'BW' ],
testedStates: [ 'BW', 'SH', 'TH' ]
}*/
作者:terry,如若转载,请注明出处:https://www.web176.com/momentjs/2354.html