php 字符串转换为时区无关的UNIX时间戳的实现方法

前端之家收集整理的这篇文章主要介绍了php 字符串转换为时区无关的UNIX时间戳的实现方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
面向编程之家 jb51.cc编程,下面跟随编程之家 jb51.cc的小编来举个例子吧。
经测试代码如下:
  1. /**
  2. * 字符串转换为时区无关的UNIX时间戳
  3. *
  4. * @param
  5. * @author 编程之家 jb51.cc jb51.cc
  6. **/
  7. function emStrtotime($timeStr) {
  8. $timezone = Option::get('timezone');
  9. if ($timeStr) {
  10. $unixPostDate = @strtotime($timeStr);
  11. if ($unixPostDate === false) {
  12. return false;
  13. } else {
  14. $serverTimeZone = PHPversion() > '5.2' ? @date_default_timezone_get() : ini_get('date.timezone');
  15. if (empty($serverTimeZone) || $serverTimeZone == 'UTC') {
  16. $unixPostDate -= $timezone * 3600;
  17. } else {
  18. if (PHPversion() > '5.2' && $serverTimeZone = date_default_timezone_get()) {
  19. /*
  20. * 如果服务器配置默认了时区,那么PHP将会把传入的时间识别为时区当地时间
  21. * 但是我们传入的时间实际是blog配置的时区的当地时间,并不是服务器时区的当地时间
  22. * 因此,我们需要将strtotime得到的时间去掉/加上两个时区的时差,得到utc时间
  23. */
  24. $offset = getTimeZoneOffset($serverTimeZone);
  25. // 首先减去/加上本地时区配置的时差
  26. $unixPostDate -= $timezone * 3600;
  27. // 再减去/加上服务器时区与utc的时差,得到utc时间
  28. $unixPostDate -= $offset;
  29. }
  30. }
  31. }
  32. return $unixPostDate;
  33. } else {
  34. return false;
  35. }
  36. }

猜你在找的PHP相关文章