zoukankan      html  css  js  c++  java
  • 基于momentjs封装常用时间工具函数

    /* eslint-disable @tuya-fe/i18n-detection */
    import moment from 'moment'
    
    const defaultFormat = 'YYYY-MM-DD'
    // 获取时间格式: 毫秒
    export const formatDate = (
      date?: moment.MomentInput | string,
      format = defaultFormat,
      defaultValue = '-',
    ): string => {
      if (date) {
        return moment(date).format(format)
      }
      return defaultValue
    }
    
    export const getMoment = (date) => moment(date)
    
    // 获取当日0点时间
    export const getStartTime = (date: any) => {
      return new Date(new Date(date).toLocaleDateString()).getTime()
    }
    
    // 获取当日23点59分时间
    export const getEndTime = (date: any) => {
      const dayDate = 24 * 60 * 60 * 1000 - 1
      return new Date(new Date(new Date(date).toLocaleDateString()).getTime() + dayDate).getTime()
    }
    
    /**
     * 毫秒转化为天小时分钟秒
     * @param msParams 毫秒值
     * @return string
     */
    export const formatTimeMsToString = (msParams: number | string) => {
      const ms = +msParams
      const ss = 1000
      const mi = ss * 60
      const hh = mi * 60
      const dd = hh * 24
      const day = parseInt(`${ms / dd}`)
      const hour = parseInt(`${(ms - day * dd) / hh}`)
      const minute = parseInt(`${(ms - day * dd - hour * hh) / mi}`)
      const second = parseInt(`${(ms - day * dd - hour * hh - minute * mi) / ss}`)
    
      if (!day && !hour && !minute && !!second) {
        return '<1分钟'
      }
    
      let str = ''
      if (day > 0) {
        str = `${str}${day}天`
      }
      if (hour > 0) {
        str = `${str}${hour}小时`
      }
      if (minute > 0) {
        str = `${str}${minute}分钟`
      }
      // if (second > 0) {
      //   str = `${str}${second}秒`
      // }
    
      return str
    }
    // 相对时间
    export const toDuration = function (val) {
      const cTime = new Date().getTime() // 当前时间
      const tTime = val // 目标时间
      const diffTime = cTime - tTime
      //秒-分-时-日-月-年
      //console.info(diffTime);
      if (diffTime < 1000) {
        return '刚刚'
      } else if (diffTime <= 60000) {
        // (60 * 1000)
        return Math.round(diffTime / 1000) + '秒前'
      } else if (diffTime <= 3600000) {
        // (60 * 60 * 1000)
        return Math.round(diffTime / 60000) + '分钟前' // (60 * 1000)
      } else if (diffTime <= 86400000) {
        // (24* 60 * 60 * 1000)
        return Math.round(diffTime / 3600000) + '时前' // (60 * 60 * 1000)
      } else if (diffTime <= 2592000000) {
        // (30 * 24 * 60 * 60 * 1000)
        return Math.round(diffTime / 86400000) + '天前' // (24 * 60 * 60 * 1000)
      } else if (diffTime <= 31104000000) {
        // (12 * 30 * 24 * 60 * 60 * 1000)
        return Math.round(diffTime / 2592000000) + '月前' // (30 * 24 * 60 * 60 * 1000)
      } else {
        return Math.round(diffTime / 31104000000) + '年前' // (12 * 30 * 24 * 60 * 60 * 1000)
      }
    }
    
    export const HoursTip = function () {
      const date = new Date()
      let hoursTip = ''
      if (date.getHours() >= 0 && date.getHours() < 12) {
        hoursTip = '上午好'
      } else if (date.getHours() >= 12 && date.getHours() < 18) {
        hoursTip = '下午好'
      } else {
        hoursTip = '晚上好'
      }
      return hoursTip
    }
  • 相关阅读:
    Android Shape画圆,矩形
    Android 图片平铺效果实现的3种方法
    threadid=1: thread exiting with uncaught exception (group=0x40db8930)
    Facebook 调试工具Stetho配置入门
    Exception in MessageQueue callback: handleReceiveCallback
    EditText 双击才能获取点击事件
    2011年中国(大陆)地级以上(含省直辖县)行政区划表
    Android 应用接入广点通统计API 方案
    Android常用工具类封装---SharedPreferencesUtil
    IIS上发布站点后URL重写失效的解决方法
  • 原文地址:https://www.cnblogs.com/art-poet/p/15434417.html
Copyright © 2011-2022 走看看