php获取当前时间戳、日期并精确到毫秒(三种方法)
php 获取当前时间戳、日期并精确到毫秒
首先,我们封装一个获取时间戳的方法:
第一种方法:时间戳13位
- /**
- * 获取时间戳到毫秒
- * @return bool|string
- */
- public static function getMillisecond(){
- list($msec, $sec) = explode(' ', microtime());
- $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
- return $msectimes = substr($msectime,0,13);
- }
其次,调用这个方法,并打印结果:
看看结果:
成功获取到了,时间戳且精确到了毫秒!---- 13位,自己数数。
第二种方法:时间戳浮点型
- /**
- * 时间戳 - 精确到毫秒
- * @return float
- */
- public static function getMillisecond() {
- list($t1, $t2) = explode(' ', microtime());
- return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
- }
调用:
- //时间戳
- $_t = self::getMillisecond();
- dd($_t);
打印结果:
第三种方法:14位年月日时分秒+3位毫秒数
- /**
- * 年月日、时分秒 + 3位毫秒数
- * @param string $format
- * @param null $utimestamp
- * @return false|string
- */
- public static function ts_time($format = 'u', $utimestamp = null) {
- if (is_null($utimestamp)){
- $utimestamp = microtime(true);
- }
- $timestamp = floor($utimestamp);
- $milliseconds = round(($utimestamp - $timestamp) * 1000);
- return date(preg_replace('`(?<!\\\\)u`', $milliseconds, $format), $timestamp);
- }
调用:
- /**
- * @param array $reqData 接口传递的参数
- * @param PayMerchant $payConf object PayMerchant类型的对象
- * @return array
- */
- public static function getAllInfo($reqData, PayMerchant $payConf)
- {
- /**
- * 参数赋值,方法间传递数组
- */
- $order = $reqData['order'];
- $amount = $reqData['amount'];
- $bank = $reqData['bank'];
- $ServerUrl = $reqData['ServerUrl']; // 异步通知地址
- $returnUrl = $reqData['returnUrl']; // 同步通知地址
- //TODO: do something
- $data = array(
- 'mchntCode' => $payConf['business_num'],
- 'channelCode' => $bank,
- 'mchntOrderNo' => $order,
- 'orderAmount' => $amount * 100,
- 'clientIp' => request()->ip(),
- 'subject' => 'goodsName',
- 'body' => 'goodsName',
- 'notifyUrl' => $ServerUrl,
- 'pageUrl' => $returnUrl,
- 'orderTime' => date('YmdHis'),
- 'description' => $order,
- 'orderExpireTime' => date('YmdHis',time()+300),
- 'ts' => self::ts_time('YmdHisu'),
- );
- dd($data);
- }
打印结果: