日期:2014-05-16  浏览次数:20331 次

js得到上周, 本月 最近一周 最近一月的时间段
/*author:snuser  return array ,  need tool about 'dateFormat.js' */

/*

ex:

date = new Date();

console.log( date.dateChange( "lastmonth" ) );

*/

function dateChange( part ) {

var beginTime;

var now   = new Date();

var month = now.getMonth();

var year  = now.getFullYear();

var day   = now.getDate();

var wday  = now.getDay;

function unsetTime( thisdate ) {

thisdate.setUTCHours( 0 );

thisdate.setUTCMinutes( 0 );

thisdate.setUTCSeconds( 0 );

}

switch ( part ) {

//当月

case "thismonth" :

unsetTime(now);

now.beginTime = now.format( "yyyy-m-d", now.setDate( 1 ) );

now.endTime   = now.format( "yyyy-m-d", now.setMonth( month +1 ) );

break;

//上个月

case "lastmonth" :

unsetTime(now);

now.setMonth( month - 1 );

now.beginTime = now.format( "yyyy-m-d", now.setDate( 1 ) );

now.endTime   = now.format( "yyyy-m-d", now.setMonth( month ) );

break;

//最近7天

case "lastsevendays" :

now.beginTime = now.format( "yyyy-m-d", now.setDate( day-7 ) );

now.endTime   = now.format( "yyyy-m-d", now.setDate( day ) );

break;

//最近一个月

case "recentmonth" :

now.endTime   = now.format( "yyyy-m-d",  now.setDate( day ) );

now.beginTime = now.format( "yyyy-m-d", now.setDate( day-30 ) );

break;

default: 

now.endTime = null; now.beginTime = null;

break;

}

return [now.beginTime, now.endTime];

 

}

Date.prototype.dateChange = function ( part ) {

return dateChange( part );

};

 

dateFormat.js


/*

 * Date Format 1.2.3

 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>

 * MIT license

 *

 * Includes enhancements by Scott Trenda <scott.trenda.net>

 * and Kris Kowal <cixar.com/~kris.kowal/>

 *

 * Accepts a date, a mask, or a date and a mask.

 * Returns a formatted version of the given date.

 * The date defaults to the current date/time.

 * The mask defaults to dateFormat.masks.default.

 */

 

var dateFormat = function () {

vartoken = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,

timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,

timezoneClip = /[^-+\dA-Z]/g,

pad = function (val, len) {

val = String(val);

len = len || 2;

while (val.length < len) val = "0" + val;

return val;

};

 

// Regexes and supporting functions are cached through closure

return function (date, mask, utc) {

var dF = dateFormat;

 

// You can't provide utc if you skip other args (use the "UTC:" mask prefix)

if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {

mask = date;

date = undefined;

}

 

// Passing date through Date applies Date.parse, if necessary

date = date ? new Date(date) : new Date;

if (isNaN(date)) throw SyntaxError("invalid date");

 

mask = String(dF.masks[mask] || mask || dF.masks["default"]);

 

// Allow setting the utc argument via the mask

if (mask.slice(0, 4) == "UTC:") {

mask = mask.slice(4);

utc = true;

}

 

var_ = utc ? "getUTC" : "get",

d = date[_ + "Date"](),

D = date[_ + "Day"](),

m = date[_ + "Month"](),

y = date[_ + "FullYear"](),

H = date[_ + "Hours"](),

M = date[_ + "Minutes"](),

s = date[_ + "Seconds"](),

L = date[_ + "Milliseconds"](),

o = utc ? 0 : date.getTimezoneOffset(),

flags = {

d:    d,

dd:   pad(d),

ddd:  dF.i18n.dayNames[D],

dddd: dF.i18n.dayNames[D + 7],

m:    m + 1,

mm:   pad(m + 1),

mmm:  dF.i18n.monthNames[m],

mmmm: dF.i18n.monthNames[m + 12],

yy:   String(y).slice(2),

yyyy: y,

h:    H % 12 || 12,

hh:   pad(H % 12 || 12),

H:    H,

HH:   pad(H),

M:    M,

MM:   pad(M),

s:    s,

ss:   pad(s),

l:    pad(L, 3),

L:    pad(L > 99 ? Math.round(L / 10) : L),

t:    H < 12 ? "a"  : "p",

tt:   H < 12 ? "am" : "pm",

T:    H < 12 ? "A"  : "P",

TT:   H < 12 ? "AM" : "PM",

Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),

o:    (o >