内容简介:几乎所有的程序员都会接触到对时间的处理,根据与前端的交互,我将时间分为两类:整型(时间戳)和字符串(各种日期格式)。总而言之,在常规的开发过程里,经常会需要对时间进行处理。我会无脑的将所有的时间都处理成时间戳,然后就可以进行时间比较和各种转化。核心代码如下,可以根据项目情况酌情再改其中的字符串匹配。
前言
几乎所有的 程序员 都会接触到对时间的处理,根据与前端的交互,我将时间分为两类:整型(时间戳)和字符串(各种日期格式)。
时间戳与时区
-
unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。
- 所以时间戳是不含时区特性的,同一时间,全球任何地方的时间用时间戳表达应该是一致的。
- 各种格式的字符串则是各地各状况,一般显示时虽然不含时区标记,也默认为当地时区。
让事情简单点
总而言之,在常规的开发过程里,经常会需要对时间进行处理。我会无脑的将所有的时间都处理成时间戳,然后就可以进行时间比较和各种转化。
核心代码如下,可以根据项目情况酌情再改其中的字符串匹配。
JS:
getTimestamp:function(pTime=null) { if (!pTime || pTime=='time()') { pTime = parseInt((new Date()).getTime()/1000); } var time = null; if (parseInt(pTime) == pTime) { time = parseInt(pTime); } else if (typeof pTime==='string') { var tmp_datetime = pTime.replace(/[: ]/g,'-'); tmp_datetime = tmp_datetime.replace(/ /g,'-'); var arr = tmp_datetime.split("-"); if (/\d\d\d\d-\d+-\d+ \d+:\d+:\d+/.test(pTime)) { var now = Date.UTC(arr[0],arr[1]-1,arr[2],arr[3]-8,arr[4],arr[5]); time = parseInt(now/1000); } else if (/\d\d\d\d-\d+-\d+/.test(pTime)) { var now = Date.UTC(arr[0],arr[1]-1,arr[2],0,0,0); time = parseInt(now/1000); } } else if (pTime instanceof Date) { time = parseInt(pTime.getTime()/1000); } return time; }
PHP:
public static function strtotime($p_time=null) { if ($p_time===null || $p_time=='time()') { return time(); } else { $time = null; if (static::is_int($p_time) && strlen($p_time)==13 ) { $p_time = substr($p_time,0,10); } $p_time = preg_replace_callback('/^(\d{4})[^\d]*?(\d\d)[^\d]*?(\d\d)[^\d]*?(\d\d)[^\d]*?(\d\d)[^\d]*?(\d\d)$/',function($matches){ if ( $matches[1]>=1970 && $matches[1]<=2999 && $matches[2]>=1 && $matches[2]<=12 && $matches[3]>=1 && $matches[3]<=31 && $matches[4]>=0 && $matches[4]<=24 && $matches[5]>=0 && $matches[5]<=60 && $matches[6]>=0 && $matches[6]<=60 ) { return $matches[1] . '-' . $matches[2] . '-' . $matches[3] . ' ' . $matches[4] . ':' . $matches[5]. ':' . $matches[6] ; } return $matches[0]; },$p_time); $p_time = preg_replace_callback('/^(\d{4})[^\d]*?(\d\d)[^\d]*?(\d\d)$/',function($matches){ if ( $matches[1]>=1970 && $matches[1]<=2999 && $matches[2]>=1 && $matches[2]<=12 && $matches[3]>=1 && $matches[3]<=31 ) { return $matches[1] . '-' . $matches[2] . '-' . $matches[3]; } return $matches[0]; },$p_time); $strtotime = strtotime($p_time); if (static::is_int($p_time) ) { if ($p_time>=19700101 && $p_time<=20991231 && strtotime(date('Y-m-d H:i:s',$strtotime)) == $strtotime) {//1970 - 2099 $time = $strtotime; } else { $time = intval($p_time); } } else if (strtotime(date('Y-m-d H:i:s',$strtotime)) == $strtotime ) { $time = $strtotime; } else if (is_subclass_of($p_time,'DateTime')) { $time = $p_time->getTimestamp(); } else { return null; } return $time; } }
后语
本文是一个思路片段的总结,其中代码并不适用于所有情况,仅记录供参考。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 编码、摘要和加密(一)——字节编码
- 新媒体编码时代的技术:编码与传输
- MySQL数据库字符编码总结--数据传输编码
- PHP 开发者学 Golang 之 URL 编码 (Urlencode)、解编码 (Urldecode)
- ios平台实现视频H264硬编码及软编码(附完整demo)
- Python 中文编码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Vim, Second Edition
Drew Neil / The Pragmatic Bookshelf / 2015-10-31 / USD 29.00
Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It’s available on almost every OS, and if you master the techniques in this book, you’ll never need an......一起来看看 《Practical Vim, Second Edition》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
HSV CMYK 转换工具
HSV CMYK互换工具