1. 程式人生 > >IOS 時間字符串轉換時間戳失敗問題

IOS 時間字符串轉換時間戳失敗問題

情況下 開發 jquery png 刪除 substr 程序 第三方 三方

鏈接:https://pan.baidu.com/s/1nw6VWoD 密碼:1peh

  有時候獲取到的時間帶有毫秒數或者是(2018-2-6 11:11:11)格式的(別說你沒遇到過,也別什麽都讓後臺轉好給你,程序員就是在長跑,短時間內看不出什麽,但一年兩年後,有的人成了大神,有的人卻還是只會切圖),這樣的字符串在ie11和IOS系統上jquery的getTime()無法將其轉為時間戳(谷歌,安卓(華為)可以)。

  本寶寶致力於高版本IE網站,和移動端H5網頁小遊戲(比如答題遊戲,大轉盤等等)開發,低版本IE的坑在剛畢業的時候踩過,現在不想去碰了,畢竟馬雲爸爸都不支持低版本IE了。

  demo在文章開頭,下面分析代碼:

  大家都知道jquery獲取當前時間戳是new Date().getTime(); 而一般轉換某時間(比如 bb = "2018/2/6 11:11:11")成時間戳的代碼如下。

  

var bb = "2018/2/6 11:11:11"
var timeb = new Date(bb).getTime();

  However,有種時間是用“-”連接年月日的(2018-2-6 11:11:11),甚至是帶毫秒的(2018-2-6 11:11:11.3)(也許是自家的瓜皮後臺給你的,也許是第三方的坑爹後臺寫的接口裏面獲取的),這種情況下,getTime();會在IOS和ie11上報NaN。代碼和效果圖如下:

var bb = "2018-2-6 11:11:11.3"
var timeb = new Date(bb).getTime();

技術分享圖片

  大家第一時間想到了把毫秒去掉,把“-”轉成“/”。but 轉換連接符容易,去掉毫秒又該怎麽去掉,這裏向大家介紹一種方法substr。這個方法可用獲取字符串的第N位到第M位,可用實現取某幾位字符,也可以實現手機號中間幾位變成***,這裏我將拿它實現刪除毫秒。代碼如下:

var bb = "2018-2-6 11:11:11.3"
console.log(bb.substr(0,bb.lastIndexOf(".")))
var timec = new Date(bb.substr(0,bb.lastIndexOf(".")).replace(/-/g,"/")).getTime();

lastIndexOf() 方法可返回一個指定的字符串值最後出現的位置,在一個字符串中的指定位置從後向前搜索。用substr獲取字符串從第開頭到 "." 。獲取到 2018-2-6 11:11:11 。然後用正則轉成 2018/2/6 11:11:11。接下來就能用getTime()轉成時間戳了。

IOS 時間字符串轉換時間戳失敗問題