问题产生 今天在处理一个接口时,发现返回的格式是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 { "meta" : { "has_next_msg" : false } , "objects" : [ { "text" : "111" , "from_user_type" : "PAT" , "pic" : "" , "ts" : 1419939065 } ] }
ts
那个属性我不太熟悉,不过我觉得应该是 timestamp 的意思吧。后来才知道,ts
就是该条消息的发送时间戳(timestamp),显示这条信息的时候应该显示为日期。
把 Date 转化为 Timestamp 我们都知道,在 js 里面把 date 转化为 timestamp 的方法比较简单,而且方法也有好多种,比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Math .floor (Date .now () / 1000 );Date .now () / 1000 | 0 new Date ('Jan 1, 2039' ) / 1000 | 0 Math .round (new Date ().getTime ()/1000 );+new Date / 1000 | 0 ~~(Date .now () / 1000 ) new Date / 1e3 | 0
把 Timestamp 转化为 Date 还有一种需求,比如我要把 timestamp 转化为 1991-10-03 06:01:54
,那么就需要先把这个 timestamp 转化为日期, 然后再进行format吧,正好我找到一个比较方便的办法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Date .prototype .format = function (format ) { var o = { 'M+' : this .getMonth () + 1 , 'd+' : this .getDate (), 'h+' : this .getHours (), 'm+' : this .getMinutes (), 's+' : this .getSeconds (), 'q+' : Math .floor ((this .getMonth () + 3 ) / 3 ), 'S' : this .getMilliseconds () }; if (/(y+)/ .test (format) || /(Y+)/ .test (format)) { format = format.replace (RegExp .$1 , (this .getFullYear () + '' ) .substr (4 - RegExp .$1 .length )); } for (var k in o) { if (new RegExp ('(' + k + ')' ).test (format)) { var first = RegExp .$1 ; var str = first.length === 1 ? o[k] : ('00' + o[k]).substr (('' + o[k]).length ); format = format.replace (first, str); } } return format; }; function tsToDate (timestamp ) { return (new Date (timestamp * 1000 )).format ('yyyy-MM-dd hh:mm:ss' ); } > tsToDate (1448967948 ) < "2015-12-01 19:05:48"