MomentJS教程:插件

其他一些开发者为 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

如果想尝试像 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 上找到其用法示例。

该插件由 @gr2m 编写。 链接:演示 | 源代码

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

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2021年4月7日 下午2:16
下一篇 2021年4月7日 下午3:14

相关推荐

发表回复

登录后才能评论