1. 程式人生 > >ios中safari不相容JavaScript中Date轉化為時間戳的問題

ios中safari不相容JavaScript中Date轉化為時間戳的問題

在做移動端時間轉化為時間戳時,遇到了一個問題,安卓手機上訪問時,能拿到時間戳,從而正確轉換時間,而在ios上缺不能正常顯示,顯示的時間為:NaN-NaN1-NaN  Invalid Date,搗鼓了好久,也在網上查了很多關於JavaScript中時間轉時間戳的方法,都沒解決,程式碼是這樣的(隨便寫死一條時間資料測試):

new Date('2016-07-18 14:58:32').getTime();      //在ios上死活拿不到時間戳

偶然,在網上找到了一哥們寫的部落格,解決了這個問題,廢話少說,說重點:

 在IOS5以上版本(不包含IOS5)中的Safari瀏覽器能正確解釋出Javascript中的 new Date('2013-10-21') 的日期物件。
     但是在IOS5版本里面的Safari解釋new Date('2013-10-21') 就不正確,在IOS5的Safari中返回的永遠是"Invalid Date"
     後來我在網上查找了資料,原來是低版本的Safari解釋new Date('2013-10-21')這個物件不一樣,在IOS5中的Safari不支援這種寫法,
     而它支援的寫法為new Date('2013','10','21'),這樣寫就能解決"Invalid Date"的問題,能返回一個Javascript Date回來了。
     但是隨之而來的問題有出現了,Date是返回過來了,可是這個Date物件中方法返回的資料可不是我想要的,返回的資料全都不正確。具體是什麼原因我也不太清楚,還請知道原理的大蝦們指點下!
     現在返回過來的Date物件.getMonth()總要比正常的要多一個月!還有.getDay()返回的星期幾也不正確!╮(╯▽╰)╭懊惱啊,折磨啊。。。。
     我都開始罵開發Safari的這幫人了,不過罵歸罵問題還是要解決的,要不工資就木有了!呵呵!
     接著我查了很多國外的技術blog,終於找到了解決方案,原來想要IOS5中的Safari能正確解析new Date()那麼必須這麼寫
     new Date('2013/10/21');
換成這種格式之後果然ok了,確實折騰了好久!

相關推薦

iossafari相容JavaScriptDate轉化時間的問題

在做移動端時間轉化為時間戳時,遇到了一個問題,安卓手機上訪問時,能拿到時間戳,從而正確轉換時間,而在ios上缺不能正常顯示,顯示的時間為:NaN-NaN1-NaN  Invalid Date,搗鼓了好久,也在網上查了很多關於JavaScript中時間轉時間戳的方法,都沒解決

vue的爬坑之路(八)之----IOSSafari兼容JavascriptDate問題

找到 () 方案 ace 格式 nbsp 後臺 get repl 在IOS5以上版本(不包含IOS5)中的Safari瀏覽器能正確解釋出Javascript中的 new Date(‘2013-10-21‘) 的日期對象。 但是在IOS5版本裏面的Safar

select在ios和android樣式相容

問題描述: ios中select有預設樣式,在Android中可以正常顯示,但在ios中會變灰變短 解決辦法: 為select設定樣式 select{ -webkit-a

部分 Android 手機硬壓視訊和 IOS 播放器相容的問題

Android 硬壓視訊 通過 MediaExtractor 將 mp4 檔案分解成 h264 碼流檔案和 aac 音訊檔案,再使用 MediaCodec 解碼 h264 得到畫素資料。降低畫面解析度、設定位元速率和關鍵幀間隔後通過 MediaCodec 重新編碼得到 h264 檔案,然後通過 mp4par

C# winform 自定義函式到Form的控制元件和定義的全域性變數

今天碰到一個比較狗血的問題,想了很多辦法,最後發現,原來如此的坑。 在新建一個form頁面後,我們在程式碼頁面寫程式碼,往往會寫自定義的方法,一般情況下,在自定義的方法中是可以找到form頁面中的控制元件和自定義的全域性變數, 但是如果我們在自定義的方法前面加了static,那麼坑就出來啦,從此這個方法好

資料結構c語言版 嚴蔚敏(演算法2.1 將所有在Lb在La的元素插入到La

標頭檔案: c1.h (相關標頭檔案及函式結果狀態程式碼集合) /* c1.h (程式名) */ #include<string.h> #include<ctype.h> #include<malloc.h> /

HTML5新元素、新屬性彙總;HTML5已經支援元素(或改css實現)等

一、新元素 1、新增的結構元素 figure元素 表示一段獨立的流內容,一般表示文件主題流內容中的一個獨立的單元。使用figcaption元素為figure元素組新增標題; (figcapt

Date.parse()轉化日期時間ios與Android兼容寫法

時間 日期 function 格式 pla ron urn for strong 把固定格式日期轉化為時間戳: //格式化當地日期 new Date(‘2017-11-11 0:0:0‘) //結果為:Sat Nov 11 2017 00:00:00 GMT+0800 (

VB 日期加減法運算,字串型轉化日期

1.日期加減法運算 DateAdd(“d”,1,now) '明天 DateAdd(“d”,-1,now) '昨天 DateAdd(“M”,1,now) '下個月 DateAdd(“M”,-1,now) '上個月 2.字串型轉化為日期 format(cdate(“2011/1

js如果用-格式的時間轉換時間在蘋果手機上NaN

今天同事問了我一個問題,說把2018-12-12 23:00:00 轉化為時間戳之後,在電腦和安卓系統上都可以正常顯示,但是在ios上面確實顯示為NAN,然後就問我什麼原因,我說有可能是時間格式的問題,在ios上面不支援-格式的時間轉化為時間戳,於是就是試了一下,果然如此。 時間轉換 我

python如何用序列(list())轉化矩陣(int())

今天練習寫python程式碼時,遇到一個有趣的寫法: def relu_fun(x): x[x<0]=0 return x 結合上下文發現x是矩陣,猜測函式功能是根據x的值若小於0,則對應位的x就置為0,否則直接返回原來x的值。

在python獲取當前時間並轉換時間

# 引入模組 import time from datetime import datetime 程式碼: # 獲取當前時間 times=datetime.now().strftime('%Y-%m-%d %H:%M:%S') print times # 轉為時間陣列 timeArr

sql語句直接將時間轉化時間格式

例如將:1532311689  =》2018-07-23 10:8:9 語句如下:select *,FROM_UNIXTIME(addtime,'%Y-%m-%d %H:%i:%s') as addTime from user 重點是:FROM_UNIXTIME(addt

mysql存取的時間轉換時間日期格式的兩種方式

一、在mysql中完成 這種方式在MySQL查詢語句中轉換,優點是不佔用PHP解析器的解析時間,速度快,缺點是隻能用在資料庫查詢中,有侷限性 1. UNIX時間戳轉換為日期用函式: FROM_UNIXTIME() 一般形式:select FROM_UNIX

PHP--date轉成時間,time()獲取的…

PHP--date轉成時間戳,time()獲取的是秒數  time()獲取的是秒數  date("Y-m-d H:i:s");  //如果存成datetime型在MYSQL中 必須用這種格式 實現功能:獲取某個日期的時間戳,或獲取某個時間的時間戳。strtotime 將任何英文文字的日期時間描述解析為

JS把Date轉化指定格式的String(Format)

<script type="text/javascript">         Date.prototype.Format = function(fmt) {             var o = {                 "M+": this.get

實現new Date(), 獲取當前時間

date() oda 關於 mys lec 希望 car mil imp JS 獲取時間戳: 我相信大家找了很久了吧! 希望我寫的這個對您有些幫助哦~ 大家是不是以為時間戳是關於時間的,都去 new Date() 裏面找方法了啊,我來告訴你們正確的吧 其實大家用 JS

JavaScriptDate物件在SafariIOS 日期出錯

首先我需要的展示的時間格式是這樣的2018/03/06 下面這個是開始時間 replace(/\-/g, "/"); 轉化成我想要的格式 $scope.endtime = $stateParams.endtime.replace(/\-/g, "/"); 下面這個是結束時間&n

解決JavaScriptnew Date(string)在IE相容的問題

1.問題描述: let date = '2018.09.17' let dateStr = new Date(date); let year = dateStr.getFullYear(); l

javascript new Date().toLocaleString()在不同瀏覽器的結果一致的解決方法

Date.prototype.toLocaleString = function () { return this.getFullYear()+’-’+(this.getMonth()+1)+’-’+this.getDate()+’ &nbsp’+this.getHou