TimeHelper.ts 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * 时间相关方法
  3. * 字符 含义 举例
  4. * y(小写y) 年 yyyy-2015
  5. * M(大写M) 月 MM-01
  6. * d(小写d) 日(某月份对应的天数) dd-02
  7. * H(24 小时制,大写H) 小时(0-23) HH-17
  8. * h(12 小时制,小写h) 小时(1-12) hh-05
  9. * m(小写m) 分钟 mm-19
  10. * s(小写s) 秒 ss-22
  11. * Y(大写y) Week Year YYYY-2015
  12. * D(大写D) 一年中的天数(年份为大写Y起作用) DD-362
  13. * S(大写S) 毫秒 SSS-043
  14. */
  15. export class TimeHelper {
  16. private constructor() {
  17. }
  18. /**
  19. * 获取当前时间戳
  20. * @returns
  21. */
  22. static getTimeMillis() {
  23. return new Date().getTime()
  24. }
  25. /**
  26. * 获取当前时间,指定返回样式
  27. * @param formats 时间格式
  28. * 'yyyy-MM-dd HH:mm:ss'
  29. */
  30. static getTime(format: string = 'yyyy-MM-dd HH:mm:ss') {
  31. return TimeHelper.formatDate(new Date(), format)
  32. }
  33. /**
  34. * 时间格式化
  35. * @param date number类型为毫秒级时间戳
  36. * @param format
  37. * @returns
  38. */
  39. static formatDate(date: Date | number, format: string = 'yyyy-MM-dd HH:mm:ss') {
  40. if (typeof date === 'number') {
  41. return this.formatDate(new Date(date), format);
  42. } else {
  43. const replacements: { [key: string]: string } = {
  44. yyyy: date.getFullYear().toString(),
  45. MM: String(date.getMonth() + 1).padStart(2, "0"),
  46. dd: String(date.getDate()).padStart(2, "0"),
  47. HH: String(date.getHours()).padStart(2, "0"),
  48. mm: String(date.getMinutes()).padStart(2, "0"),
  49. ss: String(date.getSeconds()).padStart(2, "0")
  50. };
  51. return format.replace(/yyyy|MM|dd|HH|mm|ss/g, matched => replacements[matched]);
  52. }
  53. }
  54. // // 时间戳转指定类型字符串(毫秒级)
  55. // static formatDateForTime(time: number, format: string) {
  56. // return this.formatDate(new Date(time), format);
  57. // }
  58. /**
  59. * 获取月份天数
  60. * @param year
  61. * @param month
  62. * @returns
  63. */
  64. static getMonthDays(year: number, month: number) {
  65. return new Date(year, month, 0).getDate()
  66. }
  67. /**
  68. * 是不是同一天
  69. * @param date1
  70. * @param date2
  71. * @returns
  72. */
  73. static isSameDay(date1: Date | number, date2?: Date | number) {
  74. if (typeof date1 === 'number') {
  75. date1 = new Date(date1);
  76. }
  77. if (!date2) {
  78. date2 = new Date();
  79. } else if (typeof date2 === 'number') {
  80. date2 = new Date(date2);
  81. }
  82. return date1.getFullYear() === date2.getFullYear() &&
  83. date1.getMonth() === date2.getMonth() &&
  84. date1.getDate() === date2.getDate();
  85. }
  86. }