仿照Angular的date過濾器將時間戳依照傳參格式返回

背景:最近在寫react-native項目毯侦,后端返回時間戳,但各個設計稿給的時間格式都不相同...

目的:仿照Angular的date過濾器將其時間戳根據(jù)傳參格式返回。

結果:

方法一:

    function _timeFormat(date, format) {
      if (!date) return
      function add0(m) {
        return m < 10 ? '0' + m : m
      }
      function concat(array1, array2, index) {
        return array1.concat([].slice.call(array2, index));
      }
      let DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
        time = new Date(date),
        text = ''

      let DATE_FORMATS = {
        yyyy: time.getFullYear(),
        yy: (time.getFullYear() + '').slice(2, 4),
        MM: time.getMonth() + 1,
        dd: time.getDate(),
        hh: time.getHours(),
        mm: time.getMinutes(),
        ss: time.getSeconds()
      }
      let parts = []
      while (format) {
        match = DATE_FORMATS_SPLIT.exec(format);
        if (match) {
          parts = concat(parts, match, 1);
          format = parts.pop();
        } else {
          parts.push(format);
          format = null;
        }
      }
      parts.forEach(value => {
        if (DATE_FORMATS.hasOwnProperty(value)) {
          if (value === 'yyyy' || value === 'yy') { text += DATE_FORMATS[value] }
          else { text += add0(DATE_FORMATS[value]) }
        } else {
          text += value
        }
      })
      return text
    }

方法二:

    function _dateFormat(date, format) {
      let oDate = new Date(date)
      let hours = oDate.getHours()
      let ttime = 'AM'
      if (format.indexOf('t') > -1 && hours > 12) {
        hours = hours - 12
        ttime = 'PM'
      }

      let o = {
        'M+': oDate.getMonth() + 1,
        'd+': oDate.getDate(),
        'h+': hours,
        'm+': oDate.getMinutes(),
        's+': oDate.getSeconds(),
        'q+': Math.floor((oDate.getMonth() + 3) / 3),
        'S': oDate.getMilliseconds(),
        't+': ttime
      }

      if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (oDate.getFullYear() + '').substr(4 - RegExp.$1.length))
      }
      for (var k in o) {
        if (new RegExp('(' + k + ')').test(format)) {
          format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length))
        }
      }
      return format
    }
_dateFormat(1567648218736, 'yyyy/MM/dd hh:mm')  // 2019/09/05 09:50
_dateFormat(1567648218736, 'yy/MM/dd hh:mm')    // 19/09/05 09:50
_dateFormat(1567648218736, 'yyyy-MM-dd hh:mm')  // 2019-09-05 09:50
_dateFormat(1567648218736, 'yy-MM-dd hh:mm')    // 19-09-05 09:50
_dateFormat(1567648218736, 'MM/dd/yy hh:mm')    // 09/05/19 09:50


_timeFormat(1567648218736, 'yyyy/MM/dd hh:mm')  // 2019/09/05 09:50
_timeFormat(1567648218736, 'yy/MM/dd hh:mm')    // 19/09/05 09:50
_timeFormat(1567648218736, 'yyyy-MM-dd hh:mm')    // 2019-09-05 09:50
_timeFormat(1567648218736, 'yy-MM-dd hh:mm')    // 19-09-05 09:50
_timeFormat(1567648218736, 'MM/dd/yy hh:mm')    // 09/05/19 09:50

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寒波,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌升熊,老刑警劉巖俄烁,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異僚碎,居然都是意外死亡猴娩,警方通過查閱死者的電腦和手機阴幌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門勺阐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矛双,你說我怎么就攤上這事渊抽。” “怎么了议忽?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵懒闷,是天一觀的道長。 經(jīng)常有香客問我栈幸,道長愤估,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任速址,我火速辦了婚禮玩焰,結果婚禮上,老公的妹妹穿的比我還像新娘芍锚。我一直安慰自己昔园,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布并炮。 她就那樣靜靜地躺著默刚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逃魄。 梳的紋絲不亂的頭發(fā)上荤西,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音,去河邊找鬼皂冰。 笑死店展,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的秃流。 我是一名探鬼主播赂蕴,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舶胀!你這毒婦竟也來了概说?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嚣伐,失蹤者是張志新(化名)和其女友劉穎糖赔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轩端,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡放典,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了基茵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奋构。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拱层,靈堂內(nèi)的尸體忽然破棺而出弥臼,到底是詐尸還是另有隱情,我是刑警寧澤根灯,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布径缅,位于F島的核電站,受9級特大地震影響烙肺,放射性物質(zhì)發(fā)生泄漏纳猪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一桃笙、第九天 我趴在偏房一處隱蔽的房頂上張望氏堤。 院中可真熱鬧,春花似錦怎栽、人聲如沸丽猬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脚祟。三九已至,卻和暖如春强饮,著一層夾襖步出監(jiān)牢的瞬間由桌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留行您,地道東北人铭乾。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像娃循,于是被迫代替她去往敵國和親炕檩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容