moment.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. var Moment = function (date) {
  2. var date;
  3. if (date)
  4. this.date = new Date(date);
  5. else
  6. this.date = new Date();
  7. return this;
  8. };
  9. /**
  10. * 对Date的扩展,将 Date 转化为指定格式的String
  11. * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
  12. * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  13. * eg:
  14. * "yyyy-MM-dd hh:mm:ss.S" ==> 2006-07-02 08:09:04.423
  15. * "yyyy-M-d h:m:s.S" ==> 2006-7-2 8:9:4.18
  16. * "yyyy-MM-dd E HH:mm:ss" ==> 2009-03-10 二 20:09:04
  17. * "yyyy-MM-dd EE hh:mm:ss" ==> 2009-03-10 周二 08:09:04
  18. * "yyyy-MM-dd EEE hh:mm:ss" ==> 2009-03-10 星期二 08:09:04
  19. */
  20. Moment.prototype.format = function (format) {
  21. var date = this.date;
  22. /*
  23. var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)
  24. r.exec('1985-10-15');
  25. s1=RegExp.$1;s2=RegExp.$2;s3=RegExp.$3;//结果为1985 10 15
  26. */
  27. if (typeof date === 'string')
  28. date = this.parse(date);
  29. var o = {
  30. "M+": date.getMonth() + 1, //月份
  31. "(d+|D+)": date.getDate(), //日
  32. "(h+|H+)": date.getHours(), //小时
  33. "m+": date.getMinutes(), //分
  34. "s+": date.getSeconds(), //秒
  35. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  36. "S": date.getMilliseconds() //毫秒
  37. };
  38. var week = {
  39. "0": "/u65e5",
  40. "1": "/u4e00",
  41. "2": "/u4e8c",
  42. "3": "/u4e09",
  43. "4": "/u56db",
  44. "5": "/u4e94",
  45. "6": "/u516d"
  46. };
  47. if (/(y+|Y+)/.test(format))
  48. format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  49. if (/(E+)/.test(format))
  50. format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[date.getDay() + ""]);
  51. for (var k in o) {
  52. if (new RegExp("(" + k + ")").test(format))
  53. format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  54. }
  55. return format;
  56. }
  57. Moment.prototype.parse = function () {
  58. return this.date;
  59. }
  60. /**
  61. * 计算两个日期差差
  62. * return day
  63. */
  64. Moment.prototype.differ = function (date) {
  65. var time1 = this.date.getTime();
  66. if (typeof date === 'string')
  67. date = new Date(date);
  68. var time1 = this.date.getTime();
  69. var time2 = date.getTime();
  70. var differ = Math.ceil((time1 - time2) / (1000 * 3600 * 24));//除不尽时,向上取整
  71. return differ;
  72. }
  73. Moment.prototype.add = function (num, optionType) {
  74. var date = this.date;
  75. if ('day' === optionType) {
  76. date.setDate(date.getDate() + num);
  77. }
  78. if ('month' === optionType) {
  79. date.setMonth(date.getMonth() + num);
  80. }
  81. if ('year' === optionType) {
  82. date.setFullYear(date.getFullYear() + num);
  83. }
  84. this.date = date;
  85. return this;
  86. }
  87. Moment.prototype.before = function (date) {
  88. return this.date.getTime() < new Date(date).getTime()
  89. }
  90. Moment.prototype.after = function (date) {
  91. return this.date.getTime() > date.getTime()
  92. }
  93. module.exports = function (date) {
  94. return new Moment(date);
  95. }