date.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. 'use strict';
  2. var MONTHS = [
  3. 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
  4. ];
  5. // only set once.
  6. var TIMEZONE = ' ';
  7. var _hourOffset = parseInt(-(new Date().getTimezoneOffset()) / 60, 10);
  8. if (_hourOffset >= 0) {
  9. TIMEZONE += '+';
  10. } else {
  11. TIMEZONE += '-';
  12. }
  13. _hourOffset = Math.abs(_hourOffset);
  14. if (_hourOffset < 10) {
  15. _hourOffset = '0' + _hourOffset;
  16. }
  17. TIMEZONE += _hourOffset + '00';
  18. /**
  19. * Access log format date. format: `moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')`
  20. *
  21. * @return {String}
  22. */
  23. exports.accessLogDate = function (d) {
  24. // 16/Apr/2013:16:40:09 +0800
  25. d = d || new Date();
  26. var date = d.getDate();
  27. if (date < 10) {
  28. date = '0' + date;
  29. }
  30. var hours = d.getHours();
  31. if (hours < 10) {
  32. hours = '0' + hours;
  33. }
  34. var mintues = d.getMinutes();
  35. if (mintues < 10) {
  36. mintues = '0' + mintues;
  37. }
  38. var seconds = d.getSeconds();
  39. if (seconds < 10) {
  40. seconds = '0' + seconds;
  41. }
  42. return date + '/' + MONTHS[d.getMonth()] + '/' + d.getFullYear() +
  43. ':' + hours + ':' + mintues + ':' + seconds + TIMEZONE;
  44. };
  45. /**
  46. * Normal log format date. format: `moment().format('YYYY-MM-DD HH:mm:ss.SSS')`
  47. *
  48. * @return {String}
  49. */
  50. exports.logDate = exports.YYYYMMDDHHmmssSSS = function (d, msSep) {
  51. if (typeof d === 'string') {
  52. // logDate(msSep)
  53. msSep = d;
  54. d = new Date();
  55. } else {
  56. // logDate(d, msSep)
  57. d = d || new Date();
  58. }
  59. var date = d.getDate();
  60. if (date < 10) {
  61. date = '0' + date;
  62. }
  63. var month = d.getMonth() + 1;
  64. if (month < 10) {
  65. month = '0' + month;
  66. }
  67. var hours = d.getHours();
  68. if (hours < 10) {
  69. hours = '0' + hours;
  70. }
  71. var mintues = d.getMinutes();
  72. if (mintues < 10) {
  73. mintues = '0' + mintues;
  74. }
  75. var seconds = d.getSeconds();
  76. if (seconds < 10) {
  77. seconds = '0' + seconds;
  78. }
  79. var milliseconds = d.getMilliseconds();
  80. if (milliseconds < 10) {
  81. milliseconds = '00' + milliseconds;
  82. } else if (milliseconds < 100) {
  83. milliseconds = '0' + milliseconds;
  84. }
  85. return d.getFullYear() + '-' + month + '-' + date + ' ' +
  86. hours + ':' + mintues + ':' + seconds + (msSep || '.') + milliseconds;
  87. };
  88. /**
  89. * `moment().format('YYYY-MM-DD HH:mm:ss')` format date string.
  90. *
  91. * @return {String}
  92. */
  93. exports.YYYYMMDDHHmmss = function (d, options) {
  94. d = d || new Date();
  95. if (!(d instanceof Date)) {
  96. d = new Date(d);
  97. }
  98. var dateSep = '-';
  99. var timeSep = ':';
  100. if (options) {
  101. if (options.dateSep) {
  102. dateSep = options.dateSep;
  103. }
  104. if (options.timeSep) {
  105. timeSep = options.timeSep;
  106. }
  107. }
  108. var date = d.getDate();
  109. if (date < 10) {
  110. date = '0' + date;
  111. }
  112. var month = d.getMonth() + 1;
  113. if (month < 10) {
  114. month = '0' + month;
  115. }
  116. var hours = d.getHours();
  117. if (hours < 10) {
  118. hours = '0' + hours;
  119. }
  120. var mintues = d.getMinutes();
  121. if (mintues < 10) {
  122. mintues = '0' + mintues;
  123. }
  124. var seconds = d.getSeconds();
  125. if (seconds < 10) {
  126. seconds = '0' + seconds;
  127. }
  128. return d.getFullYear() + dateSep + month + dateSep + date + ' ' +
  129. hours + timeSep + mintues + timeSep + seconds;
  130. };
  131. /**
  132. * `moment().format('YYYY-MM-DD')` format date string.
  133. *
  134. * @return {String}
  135. */
  136. exports.YYYYMMDD = function YYYYMMDD(d, sep) {
  137. if (typeof d === 'string') {
  138. // YYYYMMDD(sep)
  139. sep = d;
  140. d = new Date();
  141. } else {
  142. // YYYYMMDD(d, sep)
  143. d = d || new Date();
  144. if (typeof sep !== 'string') {
  145. sep = '-';
  146. }
  147. }
  148. var date = d.getDate();
  149. if (date < 10) {
  150. date = '0' + date;
  151. }
  152. var month = d.getMonth() + 1;
  153. if (month < 10) {
  154. month = '0' + month;
  155. }
  156. return d.getFullYear() + sep + month + sep + date;
  157. };
  158. /**
  159. * return datetime struct.
  160. *
  161. * @return {Object} date
  162. * - {Number} YYYYMMDD, 20130401
  163. * - {Number} H, 0, 1, 9, 12, 23
  164. */
  165. exports.datestruct = function (now) {
  166. now = now || new Date();
  167. return {
  168. YYYYMMDD: now.getFullYear() * 10000 + (now.getMonth() + 1) * 100 + now.getDate(),
  169. H: now.getHours()
  170. };
  171. };
  172. /**
  173. * Get Unix's timestamp in seconds.
  174. * @return {Number}
  175. */
  176. exports.timestamp = function timestamp(t) {
  177. if (t) {
  178. var v = t;
  179. if (typeof v === 'string') {
  180. v = Number(v);
  181. }
  182. if (String(t).length === 10) {
  183. v *= 1000;
  184. }
  185. return new Date(v);
  186. }
  187. return Math.round(Date.now() / 1000);
  188. };