js中日期的加減法

來源:互聯網
上載者:User

js中日期的加減法

   JavaScript實現日期加減計算功能代碼執行個體,因為在js中沒有類似C#中的AddDays方法,所以要想實現日期加減的話,就需要自己寫函數來實現。

  今天就算對JS中日期的加減法做個總結,一共兩步

  第一步,引入date.format.js,這個JS的作用是將日期轉為指定的格式,代碼如下

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

var dateFormat = function () {

var token = /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 > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),

S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]

};

 

return mask.replace(token, function ($0) {

return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);

});

};

}();

 

// Some common format strings

dateFormat.masks = {

"default": "ddd mmm dd yyyy HH:MM:ss",

shortDate: "m/d/yy",

mediumDate: "mmm d, yyyy",

longDate: "mmmm d, yyyy",

fullDate: "dddd, mmmm d, yyyy",

shortTime: "h:MM TT",

mediumTime: "h:MM:ss TT",

longTime: "h:MM:ss TT Z",

isoDate: "yyyy-mm-dd",

isoTime: "HH:MM:ss",

isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",

isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"

};

 

// Internationalization strings

dateFormat.i18n = {

dayNames: [

"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",

"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"

],

monthNames: [

"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",

"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"

]

};

 

// For convenience...

Date.prototype.format = function (mask, utc) {

return dateFormat(this, mask, utc);

};

  第二步,將時間轉換為毫秒進行加減計算,然後再用上面的js的轉為指定的日期

  ?

1

2

3

4

5

var nowDate = new Date();

//加法操作

var ysDate = new Date(nowDate.getTime()-30*24*60*60*1000).format('yyyy-mm-dd');

//減法操作

var yeDate = new Date(nowDate.getTime()-24*60*60*1000).format('yyyy-m-d');

  通過以上兩步就實現了,JS中日期的加減法,怎麼樣簡單吧!快去試試!

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.