模块 ringo/utils/dates
添加用于处理 JavaScript Date 对象的有用函数。
Example
var dates = require("ringo/utils/dates");
var now = new Date(2016, 0, 1);
var y2k = new Date(2000, 0, 1);
dates.after(now, y2k); // --> true
dates.before(now, y2k); // --> false
dates.isLeapYear(y2k); // --> true
dates.weekOfYear(y2k); // --> 52 (1st week starts at 3rd)
dates.yearInCentury(y2k); // --> 0
dates.diff(y2k, now); // --> 5844
dates.diff(y2k, now, "mixed"); // { days: 5844, hours: 0, ... }
Functions
- add (date, delta, unit)
- after (a, b)
- before (a, b)
- checkDate (fullYear, month, day)
- compare (a, b)
- dayOfYear (date)
- daysInFebruary (date)
- daysInMonth (date)
- daysInYear (date)
- diff (a, b, unit)
- firstDayOfWeek (locale)
- format (date, format, locale, timezone)
- fromUTCDate (year, month, date, hour, minute, second, millisecond)
- inPeriod (date, periodStart, periodEnd, periodStartOpen, periodEndOpen)
- isLeapYear (date)
- overlapping (aStart, aEnd, bStart, bEnd)
- parse (str, format, locale, timezone, lenient)
- quarterInFiscalYear (date, fiscalYearStart)
- quarterInYear (date)
- resetDate (date)
- resetTime (date)
- secondOfDay (date)
- toISOString (date, withTime, withTimeZone, withSeconds, withMilliseconds)
- weekOfMonth (date, locale)
- weekOfYear (date, locale)
- yearInCentury (date)
add (date, delta, unit)
如果增量为负数,则将 delta 增加到给定字段或将其减少。 如果更大的领域有效,他们将相应地改变。
Example
var d1 = new Date(Date.UTC(2016, 0, 1, 0, 0));
var d2 = dates.add(d1, 1, "hour");
dates.diff(d1, d2, "hours"); // --> 1
Parameters
Date | date | base date to add or remove time from. |
Number | delta | amount of time to add (positive delta) or remove (negative delta). |
String | unit | (optional) field to change. Possible values: |
Returns
Date | date with the calculated date and time |
after (a, b)
检查data a是否在data b之后。 这等于 compare(a, b) > 0
Parameters
Date | a | first date |
Date | b | second date |
Returns
Boolean | true if |
before (a, b)
检查data a 是否在data b之前 。 这等于 compareTo(a, b) < 0
Parameters
Date | a | first date |
Date | b | second date |
Returns
Boolean | true if |
checkDate (fullYear, month, day)
检查data是否有效。
Example
// 2007 is no leap year, so no 29th February
dates.checkDate(2007, 1, 29); // --> false
Parameters
Number | fullYear | |
Number | month | between 0 and 11 |
Number | day | between 1 and 31 |
Returns
Boolean | true, if the date is valid, false if not. |
compare (a, b)
比较 a 和 b 的时间值。
Parameters
Date | a | first date |
Date | b | second date |
Returns
Number | -1 if |
dayOfYear (date)
获取给定data是一年中的哪一天。
Parameters
Date | date | calculate the day of the year. |
Returns
Number | day of the year |
daysInFebruary (date)
获取二月份的天数。
Parameters
Date | date | of year to find the number of days in february. |
Returns
Number | days in the february, 28 or 29, if it's a leap year. |
daysInMonth (date)
获取当月的天数。
Parameters
Date | date | to find the maximum number of days. |
Returns
Number | days in the month, between 28 and 31. |
daysInYear (date)
获取当年的天数。
Parameters
Date | date | to find the maximum number of days. |
Returns
Number | days in the year, 365 or 366, if it's a leap year. |
diff (a, b, unit)
获取以时间单位指定的两个日期之间的差异。
Example
var d1 = new Date(Date.UTC(2016, 0, 1, 0, 0));
var d2 = new Date(Date.UTC(2017, 0, 1));
dates.diff(d1, d2, "years"); // --> 1
dates.diff(d1, d2, "year"); // --> 1
dates.diff(d1, d2, "minutes"); // --> 527040
dates.diff(d1, d2, "mixed"); // --> { days: 366, hours: 0, … }
Parameters
Date | a | first date |
Date | b | second date |
String | unit | (optional) of time to return. Possible values: |
Returns
Number|Object<days, hours, minutes, seconds, milliseconds> | difference between the given dates in the specified unit of time. |
firstDayOfWeek (locale)
获取一周中的第一天。
Parameters
String|java.util.Locale | locale | (optional) the locale as java Locale object or lowercase two-letter ISO-639 code (e.g. "en") |
Returns
Number | the first day of the week; 1 = Sunday, 2 = Monday. |
format (date, format, locale, timezone)
以区域设置敏感的方式将日期格式化为字符串。有关格式模式的详细信息,请参阅 java.text.SimpleDateFormat 。
Example
var y2k = new Date(Date.UTC(2000, 0, 1));
// "year 2000"
dates.format(y2k, "'year' yyyy");
// "Samstag, Januar 1, '00"
dates.format(y2k, "EEEE, MMMM d, ''yy", "de");
// "1999-12-31"
dates.format(y2k, "yyyy-MM-dd", "de", "GMT-1");
// "2000-01-01 00:00:00 GMT-00:00"
dates.format(y2k, "yyyy-MM-dd HH:mm:ss z", "de", "GMT-0");
// "1999-12-31 14:00:00 GMT-10:00"
dates.format(y2k, "yyyy-MM-dd HH:mm:ss z", "de", "GMT-10");
Parameters
Date | date | the Date to format |
String | format | the format pattern |
String|java.util.Locale | locale | (optional) the locale as java Locale object or lowercase two-letter ISO-639 code (e.g. "en") |
String|java.util.TimeZone | timezone | (optional) the timezone as java TimeZone object or an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". If the id is not provided, the default timezone is used. If the timezone id is provided but cannot be understood, the "GMT" timezone is used. |
Returns
String | the formatted Date |
fromUTCDate (year, month, date, hour, minute, second, millisecond)
从UTC时间戳创建新的日期。这是新 new Date(Date.UTC(…));
的替代方法;
Parameters
Number | year | |
Number | month | |
Number | date | |
Number | hour | (optional, default 0) |
Number | minute | (optional, default 0) |
Number | second | (optional, default 0) |
Number | millisecond | (optional, default 0) |
Returns
Date |
inPeriod (date, periodStart, periodEnd, periodStartOpen, periodEndOpen)
查看日期是否在期间,使用 periodStart <= date <= periodEnd。
Parameters
Date | date | to check, if it's in the period |
Date | periodStart | the period's start |
Date | periodEnd | the period's end |
Boolean | periodStartOpen | start point is open - default false. |
Boolean | periodEndOpen | end point is open - default false. |
Returns
Boolean | true if the date is in the period, false if not. |
isLeapYear (date)
检查日期的年份是否为闰年。
Parameters
Date | date | to check year |
Returns
Boolean | true if the year is a leap year, false if not. |
overlapping (aStart, aEnd, bStart, bEnd)
看看两个时期是否相互重叠。
Parameters
Date | aStart | first period's start |
Date | aEnd | first period's end |
Date | bStart | second period's start |
Date | bEnd | second period's end |
Returns
Boolean | true if the periods are overlapping at some point, false if not. |
parse (str, format, locale, timezone, lenient)
使用 Java SimpleDateFormat 中的日期和时间模式将字符串解析为日期。如果没有提供格式,默认情况下,Internet 上的时间戳将遵循RFC 3339。解析器使用宽松解析将模式与字符串进行匹配:即使输入不严格地以模式形式存在,但可以使用启发式进行解析,那么解析成功。
Example
// parses input string as local time:
// Wed Jun 29 2016 12:11:10 GMT+0200 (MESZ)
let pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS";
dates.parse("2016-06-29T12:11:10.001", pattern);
// enforces UTC on the input date string
// Wed Jun 29 2016 14:11:10 GMT+0200 (MESZ)
dates.parse("2016-06-29T12:11:10.001", pattern, "en", "UTC");
// accepting month names in German
dates.parse("29. Juni 2016", "dd. MMM yyyy", "de", "UTC");
// Fri Jan 01 2016 01:00:00 GMT+0100 (MEZ)
dates.parse("2016");
// Sat Aug 06 2016 02:00:00 GMT+0200 (MESZ)
dates.parse("2016-08-06");
// Sun Aug 07 2016 00:04:30 GMT+0200 (MESZ)
dates.parse("2016-08-06T22:04:30Z");
// Sun Aug 07 2016 00:04:30 GMT+0200 (MESZ)
dates.parse("2016-08-06T16:04:30-06");
Parameters
String | str | The date string. |
String | format | (optional) a specific format pattern for the parser |
String|java.util.Locale | locale | (optional) the locale as |
String|java.util.TimeZone | timezone | (optional) the timezone as java TimeZone object or an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". If the id is not provided, the default timezone is used. If the timezone id is provided but cannot be understood, the "GMT" timezone is used. |
Boolean | lenient | (optional) disables lenient parsing if set to false. |
Returns
Date|NaN | a date representing the given string, or |
quarterInFiscalYear (date, fiscalYearStart)
获得财政年度的季度。
Example
// Farmers (grassland calendar starts with 1st May)
// returns 4th quarter
dates.quarterInFiscalYear(new Date(2016, 3, 30), new Date(0, 4, 1));
Parameters
Date | date | to calculate the quarter for. |
Date | fiscalYearStart | first day in the fiscal year, default is the start of the current year |
Returns
Number | quarter of the year, between 1 and 4. |
quarterInYear (date)
获得一年中的季度。
Parameters
Date | date | to calculate the quarter for. |
Returns
Number | quarter of the year, between 1 and 4. |
resetDate (date)
删除日期值,只保留小时,分钟,秒和毫秒。
Example
var d = new Date(2016, 5, 10, 10, 20, 30);
// Thu Jan 01 1970 10:20:30 GMT+0100 (MEZ)
dates.resetDate(d);
Parameters
Date | date | to reset |
Returns
Date | date with the original time values and 1970-01-01 as date. |
resetTime (date)
将时间值重置为 0,只保留年,月和日。
Example
var d = new Date(2016, 5, 10, 10, 20, 30);
// Fri Jun 10 2016 00:00:00 GMT+0200 (MESZ)
dates.resetTime(d);
Parameters
Date | date | to reset |
Returns
Date | date without any time values |
secondOfDay (date)
获取给定日期的第二天。
Parameters
Date | date | calculate the second of the day. |
Returns
Number | second of the day |
toISOString (date, withTime, withTimeZone, withSeconds, withMilliseconds)
从日期创建一个 ISO 8601 兼容字符串。注意:这与 Date.toISOString() 非常相似,它只返回一个没有本地时区的基于 UTC 的字符串。如果你不需要时区,Date.toISOString() 将是更好的选择。
Example
// "2015-11-27T17:52:12+01:00"
dates.toISOString(new Date());
Parameters
Date | date | to format |
Boolean | withTime | if true, the string will contain the time, if false only the date. Default is true. |
Boolean | withTimeZone | if true, the string will be in local time, if false it's in UTC. Default is true. |
Boolean | withSeconds | if true, the string will contain also the seconds of the date. Default true. |
Boolean | withMilliseconds | if true, the string will contain also the milliseconds of the date. Default false. |
Returns
String | date as ISO 8601 string. |
weekOfMonth (date, locale)
获取给定日期的月份的星期。
Parameters
Date | date | calculate the week of the month. |
String|java.util.Locale | locale | (optional) the locale as java Locale object or lowercase two-letter ISO-639 code (e.g. "en") |
Returns
Number | week of the month |
weekOfYear (date, locale)
获取给定日期的一年的一周。
Parameters
Date | date | calculate the week of the year. |
String|java.util.Locale | locale | (optional) the locale as java Locale object or lowercase two-letter ISO-639 code (e.g. "en") |
Returns
Number | week of the year |
yearInCentury (date)
获取给定日期的世纪年。
Example
dates.yearInCentury(new Date(1900, 0, 1)); // --> 0
dates.yearInCentury(new Date(2016, 0, 1)); // --> 16
Parameters
Date | date | calculate the year of the century. |
Returns
Number | second of the day |