Datejs 是一个开源的JavaScript库,用来解析、格式化和处理日期数据,支持多种语言的日期格式处理;官网:www.datejs.com/
Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。它支持在浏览器和NodeJS两种环境中运行;
date-fns库:
现代 JavaScript 日期实用程序库。date-fns 提供了最全面,最简单和一致的工具集,用于在浏览器和 Node.js 中操作 JavaScript 日期;官网:date-fns.org
Prettydate 是一个 jQuery 用来显示一些用户友好的日期格式的插件,例如Posted 2 days ago by John Resig;
Countdown是jQuery的一个用于显示倒计时的插件;
XDate是一个对Javascirpt本地Date对象的轻度包装,它提供对日期的解析、格式化以及其他操作的较强功能;
DP_DateExtensions库继承了JavaScript的Date对象,并添加了一些新特性和功能。
组件类:
layDate 日期与时间组件,layDate 是 layui 独立维护的三大组件之一;官网:www.layui.com/laydate/
Datejs 日期库:是一个开源的JavaScript库,用来解析、格式化和处理日期数据,支持多种语言的日期格式处理;
官网:www.datejs.com/
基本用法:
// 返回今天的日期,时间设置为00:00(一天的开始)
console.log(Date.today().toString("yyyy-MM-d HH:m:s"));
//返回下一个星期五的日期
console.log(Date.today().next().friday().toString("yyyy-MM-d HH:m:s"));
Date.today().last().monday() //返回上一个星期一的日期
new Date().next().march() //返回下一个三月的日期。
new Date().last().week() //返回一周前的日期。
Date.today().is().friday() //如果星期几匹配,则返回true | false.
Date.today().is().fri() //缩写的日期名称.
Date.today().is().november() //月名称
Date.today().is().nov() //月份的缩写.
Date.today().is().weekday() //今天是工作日吗?
Date.today().addDays(1); //添加一天(+1)
Date.today().addMonths(-3); //减去三个月内(-3)
//添加一(+1)天。支持所有日期部分(年,月,日,时,分,秒,毫秒和周)
Date.today().add(1).day();
Date.today().add(-3).months(); //减去三(-3)个月
// (1).day().fromNow() //从现在起一(1)天。
// (3).months().ago() //三(3)个月前。
var n = 6;
console.log(n.months().fromNow().toString('d')); //从现在起六(6)个月。
Date.monday(); //返回当前星期的星期一。
Date.mon(); // Date.monday()的缩写版本
Date.march(); //返回今年3月1日。
Date.mar(); // Date.march()的缩写版本
Date.today().first().thursday(); //返回当年3月的第一个星期四。
Date.today().second().thursday();//返回当前月份的第二个星期四。
Date.march().third().thursday(); //返回当年3月的第三个星期四。
Date.october().fourth().sunday();//返回十月的第四个星期日。
//返回当前月份的第五个星期日,如果当前月份没有5个星期日,则抛出RangeError异常。
// Date.today().fifth().sunday();
Date.october().final().sunday(); //返回十月的最后一个星期日。
Date.january().first().monday(); //返回当年的第一个星期一。
Date.december().final().friday();//返回当年的最后一个星期五。
Date.today().at("6:15pm"); //返回今天的日期为6:15 pm。
var time = {hour:18, minute:15};
Date.today().at(time); //使用配置对象设置时间。
var birthDayParty = {month: 1, day: 20, hour: 20, minute: 30};
Date.today().set(birthDayParty);//使用配置对象设置日期和时间。
日期解析转换:
Date.parse("t"); //返回今天的日期
Date.parse("today"); //返回今天的日期。
Date.parse("tomorrow"); //返回明天的日期
Date.parse("yesterday"); //返回昨天的日期
Date.parse("next friday"); //返回下一个星期五的日期
Date.parse("last monday"); //返回上一个星期一的日期。
Date.parse("July 8th, 2004"); // 2004年7月8日星期四
Date.parse("15-Jan-2004"); // 2004年1月15日星期四
Date.parse("7/1/2004"); // 2004年7月1日星期四
Date.parse("7.1.2004"); // 2004年7月1日星期四
Date.parse("07.15.04"); // 2004年7月15日星期四
Date.parse("July 23rd 2004"); //周五2004年7月23日
Date.parse("Sat July 3, 2004"); // 2004年7月3日星期六
Date.parse("10:30 PM EST"); // 2007年10月31日星期三20:30:00
Date.parse("10PM"); // 2007年10月31日星期三22:00:00
Date.parse("t + 5d"); //将5天加到今天
Date.parse("today - 1 month"); //从今天开始减去1个月
Date.parse("+"); //将1天添加到今天=明天
Date.parse("- 3months"); //减去3个月
Date.parse("+1year"); //在今天加上一年
Date.parse("-12 months"); //从今天起减去12个月(1年)
Date.parse("July 4th"); //今年7月4日
Date.parse("15"); //当前月份/年份的第15天
Date.parse("July 8th, 2004, 10:30 PM");// 2004年7月8日,星期四
Date.parse("2004-07-15T06:45:00"); // 2004年7月15日星期四
Date.parse("Thu, 1 July 2004 22:30:00 GMT");//星期四,2004年7月1日16:30:00
Date.parse("1997-07-16T19:20:15"); // ISO 8601格式
Date.parse("1997-07-16T19:20:30+01:00");//具有时区偏移
Date.parse("1985-04-12T23:20:50Z"); // RFC 3339格式
链接操作:
//添加1个月零5天,然后检查该日期是否为星期五
Date.today().add({ months: 1, days: 5 }).is().fri();
//输入日期,然后移至下一个星期五,减去一个月
Date.parse("10-July-2004").next().friday().add(-1).month();
日期比较:
Date.today().equals( Date.parse("today")); // true|false
Date.parse("last Tues").equals(Date.today()); // true|false
Date.equals(Date.today(), Date.parse("today")); // true|false
Date.compare(Date.today(), Date.parse("today")); // 1 = greater, -1 = less than,
Date.today().compareTo(Date.parse("yesterday")); // 1 = greater, -1 = less than, 0 = equal
Date.today().between(startDate, endDate); // true|false
转换为字符串:
注意该format参数对于该.toString()功能是可选的。如果未提供format,.toString()则将调用本地JavaScript Date 函数。
标准日期和时间格式说明符
- s:分钟介于0到59之间的秒数,如:0 to 59
- ss:如果需要,分钟的秒数,前导零,如:00 to 59
- m:每小时的分钟数,介于0到59之间,如:0 or 59
- mm:每小时的分钟,前导零(如果需要),如:00 to 59
- h:1到12之间的一天中的小时,如:1 to 12
- hh:如果需要,一天中的小时数,前导零,如:01 to 12
- H:0-23之间的一天中的小时,如:0 to 23
- HH:如果需要,一天中的小时数,前导零,如:00 to 23
- d:每月的1到31之间的日期,如:1 to 31
- dd:如果需要的话,该月的某天前导零。如:01 to 31
- ddd:缩写的天名,如:Mon to Sun
- dddd:全日名称,如:Monday to Sunday
- M:一年中的1-12点之间的月份,如:1 to 12
- MM:一年中的前导零(如果需要),如:01 to 12
- MMM:缩写的月份名称,如:Jan to Dec
- MMMM:完整的月份名称,如:January to December
- yy:将年份显示为两位数,如:99 or 07
- yyyy:显示完整的四位数年份,如:1999 or 2007
- t:显示AM / PM指示符的第一个字符,如:A or P
- tt:显示AM / PM指示符,如:AM or PM
- S:当日的序数后缀,如:st, nd, rd, or th
自定义日期和时间格式说明符
- d:shortDate格式模式,如:M/d/yyyy
- D:longDate 格式模式,如:dddd, MMMM dd, yyyy
- F:fullDateTime 格式模式,如:dddd, MMMM dd, yyyy h:mm:ss tt
- m:monthDay 格式模式,如:MMMM dd
- r:rfc1123 格式模式,如:ddd, dd MMM yyyy HH:mm:ss GMT
- s:sortableDateTime 格式模式,如:yyyy-MM-ddTHH:mm:ss
- t:shortTime 格式模式,如:h:mm tt
- T:longTime 格式模式,如:h:mm:ss tt
- u:universalSortableDateTime 格式模式,如:yyyy-MM-dd HH:mm:ssZ
- y:yearMonth 格式模式,如:MMMM, yyyy
分隔符:
/ 正斜杠、空格、- 连字号、逗号
new Date().toString(); //星期三2007年10月31日格林尼治标准时间0700(太平洋夏令时间)
new Date().toString("M/d/yyyy"); //2007年10月31日
Date.today().toString("d-MMM-yyyy"); //2007年10月31日
new Date().toString("HH:mm"); // 16:18
Date.today().toString("MMMM dS, yyyy"); // April 12th, 2008
Date.today().toShortDateString();// "10/31/2007". 根据Date.CultureInfo.shortDatePattern特定于区域性
Date.today().toLongDateString();// "Wednesday, October 31, 2007". 根据Date.CultureInfo.longDatePattern特定于区域性
new Date().toShortTimeString();// "4:18 PM". 根据Date.CultureInfo.shortTimePattern特定于区域性
new Date().toLongTimeString();// "4:18:34 PM". 根据Date.CultureInfo.longTimePattern特定于区域性
核心用法:
//将日期设置为当前月份和年份的15号;
//其他对象值包括year|month|day|hour|minute|second。
Date.today().set({ day: 15 });
Date.today().set({ year: 2007, month: 1, day: 20 });
//将Date添加2天。其他对象值包括 year|month|day|hour|minute|second.
Date.today().add({ days: 2 });
Date.today().add({ years: -1, months: 6, hours: 3 });
Date.today().addYears(1); //增加1年
Date.today().addMonths(-2); //相减2个月
Date.today().addWeeks(1); //增加1周
Date.today().addDays(4); //增加4天
Date.today().addHours(6); //增加6小时
Date.today().addMinutes(-30); //相减30分钟
Date.today().addSeconds(15); //增加15秒
Date.today().addMilliseconds(200); //增加200毫秒
Date.today().moveToFirstDayOfMonth();//返回当前月份的第一天
Date.today().moveToLastDayOfMonth();//返回当前月份的最后一天
new Date().clearTime(); //将时间设置为00:00(一天的开始)
Date.today().setTimeToNow();//将时间重置为当前时间;与clearTime()的功能相反
ISO 8601:
- Date.parse("\"1997-07-16T19:20:15\"");//解析ISO 8601字符串
- new Date().toISOString();//将日期转换为ISO 8601字符串
- Date.today().getISOWeek();//获取UTC转换的ISO周编号
其他用法:
Date.getMonthNumberFromName("March");// 2-特定于CultureInfo。<static>
Date.getDayNumberFromName("sat");// 6-特定于CultureInfo。<静态>
Date.isLeapYear(2008) // true|false. <static>
Date.getDaysInMonth(2007, 9) // 31 <static>
Date.today().getWeek();//返回一年中的第几周。根据年份Date 返回1到(52 | 53)
Date.today().setWeek(1); //将一年中的星期几设置为星期几
var test = new Date(); // Do something... like run a test...
test.getElapsed(); //返回距现在的毫秒数
Date.today().isDaylightSavingTime();// true|false. 在夏令时之内
Date.today().hasDaylightSavingTime();// true|false. 是否遵守夏令时