[Javascript] 轻量级的JavaScript日期处理类库xDate使用指南

XDate是一个请谅解的JavaScript的原生Date对象的封装库,提供增强的功能解析,格式化和日期处理。使用起来就和JavaScript自己的对象和方法一样,非常简单。

XDate是一个请谅解的JavaScript的原生Date对象的封装库,提供增强的功能解析,格式化和日期处理。使用起来就和JavaScript自己的对象和方法一样,非常简单。

Download:
Size: 7.2k (3.0k gzipped)
Version: 0.8
Released: Mar 30th, 2013

使用说明:

 首先在页面中添加 XDate 的 JS 文件

<script src="xdate.js"></script>

  之后就可以了 new 一个日期出来,如

var d = new XDate("2012-9-9");
var c = new XDate(2012, 7, 8);
d.addDays(10);
var a = d.toString("yyyy/MM/dd");

 

Constructors

new XDate()
使用当前的日期和时间创建一个新的XDate
new XDate(xdate)
创建一个新的XDate从一个xdate对象
new XDate(nativeDate)
创建一个新的XDate从一个指定的日期
new XDate(milliseconds)
通过UTC毫秒数创建一个新的XDate。
new XDate(year, month,  date, hours, minutes, seconds, milliseconds)
new XDate(dateString)

Read more about date-string parsing

 

下面是xDate的常用方法:

Getters

.getFullYear()
Returns the 4-digit year (ex: 2012)
.getMonth()
Returns the month of the year. (0-11)
Value is zero-index, meaning Jan=0, Feb=1, Mar=2, etc.
.getWeek()
Returns the  ISO week number of the year. (1-53)
.getDate()
Returns the date of the month. (1-31)
.getDay()
Returns the day-of-week as a number. (0-6)
Sun=0, Mon=1, Tue=2, etc.
.getHours()
Returns the hour of the day. (0-23)
.getMinutes()
Returns the minute of the hour. (0-59)
.getSeconds()
Returns the second of the minute. (0-59)
.getMilliseconds()
Returns the millisecond of the second. (0-999)
.getTime()
Returns the number of milliseconds since the epoch.
.valueOf()
Returns the number of milliseconds since the epoch. Identical to  getTime.

Setters

.setFullYear(year,  preventOverflow)
year is a 4-digit year
.setMonth(month,  preventOverflow)
month is zero-indexed, meaning Jan=0, Feb=1, Mar=2, etc.
.setWeek(week,  year)

Moves the xdate to the Monday of the given week with time 00:00:00. The week is represented by a given ISO week number and an optional year. Ifyear is omitted, the xdate's year with be used.

.setDate(date)
Sets the date of the month. (1-31)
.setHours(hours)
Sets the hour of the day. (0-23)
.setMinutes(minutes)
Sets the minute of the hour. (0-59)
.setSeconds(seconds)
Sets the second of the minute. (0-59)
.setMilliseconds(milliseconds)
Sets the millisecond of the second. (0-999)
.setTime(milliseconds)
Sets the number of milliseconds since the epoch.

Setting preventOverflow to true prevents a date from "overflowing" into the next month. Example:

d=newXDate(2011,7,31);// August 31d.setMonth(8);// Septemberd.toString();// October 1st!!! because there are only 30 says in September// let's try this with preventOverflow...d=newXDate(2011,7,31);// August 31d.setMonth(8,true);// Septemberd.toString();// September 30!

Setting preventOverflow to true guarantees the date will be in desired month. It is optional and defaults to false.

Adding

The following methods add or subtract time from the XDate:

.addYears(years,  preventOverflow) .addMonths(months,  preventOverflow) .addWeeks(weeks) .addDays(days) .addHours(hours) .addMinutes(minutes) .addSeconds(seconds) .addMilliseconds(milliseconds)

If a value is negative, subtraction will occur. Values may be floating-point numbers.

Please note, these methods directly modify the object. Use clone if you need a copy.

Diffing

The following methods return the amount of time that must be added to the XDate in order to arrive at otherDate.

.diffYears(otherDate) .diffMonths(otherDate) .diffWeeks(otherDate) .diffDays(otherDate) .diffHours(otherDate) .diffMinutes(otherDate) .diffSeconds(otherDate) .diffMilliseconds(otherDate)

otherDate can be an XDate, a native Date, a milliseconds time, or a date-string.

The results will be positive or negative depending on the ordering of the dates:

varthanksgiving=newXDate(2011,10,24);varchristmas=newXDate(2011,11,25);thanksgiving.diffDays(christmas);// 31christmas.diffDays(thanksgiving);// -31

Also, the result can potentially be a floating-point number:

varjan2011=newXDate(2011,0,1);varjul2012=newXDate(2012,6,1);jan2011.diffYears(jul2012);// 1.5

You'll have to do the rounding or flooring yourself.

Parsing

Date-strings must either be in ISO8601 format or IETF format (like "Mon Sep 05 2011 12:30:00 GMT-0700 (PDT)")

ISO8601 is the preferred format. Examples:

  • "2011-09-05"

  • "2011-09-05T12:30:00"

  • "2011-09-05T12:30:00-07:00"

  • "2011-09-05T12:30:00Z"

Advanced: extending the parser

Formatting

.toString( formatString, settings)
If  formatString is not specified, a browser-produced IETF string will be returned.  settings can be a name of an available locale or an object that overrides the default locale's settings.
.toUTCString( formatString, settings)
Same as  toString but gets its values from the UTC version of the date. As a result, "Z" will be displayed as the timezone.
.toISOString()
Returns an ISO8601 string that has been normalized to UTC. Will have a "Z" timezone indicator. See the native Date's specs for  toISOString.
.toDateString()
Same as native Date's  toDateString
.toTimeString()
Same as native Date's  toTimeString
.toLocaleString()
Same as native Date's  toLocaleString
.toLocaleDateString()
Same as native Date's  toLocaleDateString
.toLocaleTimeString()
Same as native Date's  toLocaleTimeString

formatString can contain any of the following tokens:

fffmilliseconds, 3-digits
sseconds
ssseconds, 2-digits
mminutes
mmminutes, 2-digits
hhours, 12-hour clock
hhhours, 12-hour clock, 2-digits
Hhours, 24-hour clock
HHhours, 24-hour clock, 2-digits
ddate number
dddate number, 2-digits
dddday name, 3-characters (like "Sun")
ddddday name, full (like "Sunday")
Mmonth number (Jan=1, Feb=2, etc)
MMmonth number, 2-digits
MMMmonth name, 3-characters (like "Jan")
MMMMmonth name, full (like "January")
yyyear, 2-digits
yyyyyear, 4-digits
ta/p
ttam/pm
TA/P
TTAM/PM
ztimezone offset hour (like "-7") or "Z"
zztimezone offset hour, 2-digits (like "-07") or "Z"
zzztimezone offset hour, 2-digits, and minutes (like "-07:00") or "Z"
wISO week number
wwISO week number, 2 digits
Sday-of-week ordinal (like "st", "nd", "rd")
iISO8601 format, without a timezone indicator
uISO8601 format, with a timezone indicator

Example:

vard=newXDate(2012,5,8);d.toString("MMM d, yyyy");// "Jun 8, 2012"d.toString("i");// "2012-06-08T00:00:00"d.toString("u");// "2012-06-08T00:00:00-07:00"

If you want to have literal text in your formatString, enclose it in single quotes:

vard=newXDate(2012,5,8);d.toString("'the month is' MMMM");// "the month is June"

A literal single quote is represented by two consecutive single quotes.

If you want to output text only if certain values are non-zero, enclose your tokens in parenthesis:

newXDate(2011,0,1,6,0).toString('M/d/yy h(:mm)TT');// "1/1/11 6AM"newXDate(2011,0,1,6,30).toString('M/d/yy h(:mm)TT');// "1/1/11 6:30AM"

Advanced:

UTC Methods

The following methods are similar to previously mentioned methods but operate on the UTC values of the date:

.getUTCFullYear() .getUTCMonth() .getUTCWeek() .getUTCDate() .getUTCDay() .getUTCHours() .getUTCMinutes() .getUTCSeconds() .getUTCMilliseconds() .setUTCFullYear(year) .setUTCMonth(month) .setUTCWeek(week,  year) .setUTCDate(date) .setUTCHours(hours) .setUTCMinutes(minutes) .setUTCSeconds(seconds) .setUTCMilliseconds(milliseconds)

UTC Mode

Just like a native Date, an XDate is represented by its number of milliseconds since the epoch. Also like a native Date, methods like getDate and getHours are dependant upon the client computer's timezone.

However, you can remove this reliance on the client computer's timezone and make a UTC date, a date without a timezone. A date in UTC-mode will have all of its "get" methods identical to its "getUTC" methods and won't experience any daylight-savings time.

true argument can be appended to any of the constructors to make an XDate in UTC-mode:

d=newXDate(true);// the current date, in UTC-moded.toString();// "Mon, 24 Oct 2011 08:42:08 GMT"d=newXDate(2012,5,8,true);// values will be interpreted as UTCd.toString();// "Fri, 08 Jun 2012 00:00:00 GMT"d=newXDate('2012-06-08',true);// ambiguous timezone, so will be parsed as UTCd.toString();// "Fri, 08 Jun 2012 00:00:00 GMT"

Here are methods that relate to UTC-mode:

.getUTCMode()
Returns  true if the date is in UTC-mode and  false otherwise
.setUTCMode(utcMode,  doCoercion)
utcMode must be either  true or  false. If the optional  doCoercion parameters is set to  true, the underlying millisecond time of the date will be coerced in such a way that methods like  getDate and  getHours will have the same values before and after the conversion.
.getTimezoneOffset()
Returns the number of minutes from UTC, just like the native Date's  getTimezoneOffset. However, if the XDate is in UTC-mode,  0 will be returned.

Please note, these methods directly modify the object. Use clone if you need a copy.

Utilities

.clone()
returns a copy of the XDate
.clearTime()
sets the hours, minutes, seconds, and milliseconds to zero
.valid()
return  true if the XDate is a valid date,  false otherwise
.toDate()
Returns a conversion to a native  Date

The following utilities are members of the XDate class and are not associated with a specific XDate instance:

XDate.getDaysInMonth(year, month)
Returns the number of days in the given month
XDate.parse(dateString)
Parses a date-string and returns milliseconds since the epoch. You'll probably want to use  new XDate(dateString) instead.
XDate.now()
Returns the current date, as milliseconds since the epoch. You'll probably want to use  new XDate() instead.
XDate.today()
Returns the current date with time cleared, as an XDate object
XDate.UTC(year, month,  date, hours, minutes, seconds, milliseconds)
Returns a milliseconds time since the epoch for the given UTC date

Chaining

Many of XDate's methods return a reference to the same XDate object. This allows you to "chain" operations together and makes for more concise code:

d1=newXDate();d2=d1.clone().setUTCMode(true).setDate(1).addMonths(1).addYears(2);

Inconsistencies with Native Date

XDate attempts to be "backwards-compatible" with the native Date object. However, there are two small departures that were made:

If you've never noticed, a native Date object returns it's millisecond value every time there is a "set" method. This is not very helpful. In the same situations, an XDate will return a reference to itself to allow for chaining. This is much more useful, but does not match the way the native Date works.

Also, when a native Date is concatenated with a string (with&n

转载于:https://www.cnblogs.com/jqmtony/p/4109205.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RainyxDate 1.0 一个获取日期(公历、农历)的js小插件 一、用法: 1、引入: [removed][removed] 2、调用: JS调用: 此段js调用代码最好放在显示日期的页面里,不要放在外调的js文件中,否则ie6显示会有问题 [removed] $(document).ready(function(){ //网页一般都会用到jQuery吧,所以要记得引入jQuery //日期调用 var d = GetCNDate(); //调用农历的语句 var a = GetYLDateYMDW() + " " + d; //调用阳历时间 $('#time').html(a); //“time”为显示时间div的id }) [removed] Html写法: * 二、函数: function GetNlDate() 获取农历日期字符串,例如:“壬辰(龙)年 腊月十四” function GetGLDateAll() 获取完整的公历日期字符串,例如:“2013年1月25日 下午 2:59:11 星期五” function GetGLDateYMDW() 获取年、月、日、星期的公历日期字符串,例如:“2013年1月25日 下午 星期五” 三、说明: 这只是实现基本功能,需要其他显示效果的自己写函数吧 ~~ 四、缺陷: 1、只能读取并计算出客户端的时间,如果客户端时间不准,那你懂的;解决办法也有,就是写服务端代码,不过服务端代码不利于静态页面生成(就是说生成的静态页面无法自动更新日期);再解决也有,思路可能是js调用服务端时间,然后在显示到页面上,想想都复杂... 2、无法读秒,这个在js调用中加入一个计数器就可以了,用jQuery还是比较容易实现的,没更多说明了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值