首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么strtotime没有给我正确的时区转换?

strtotime函数是PHP中用于将日期时间字符串转换为Unix时间戳的函数。它的工作原理是将传入的日期时间字符串解析为一个时间戳,但是它并不会考虑时区的影响。

时区是一个重要的概念,它用于确定特定地理区域的时间偏移量。不同的时区具有不同的时间偏移量,因此在处理日期时间时,时区的正确设置非常重要。

如果strtotime没有给出正确的时区转换,可能是因为以下几个原因:

  1. 时区设置不正确:PHP的默认时区设置可能与您所期望的时区不一致。您可以使用date_default_timezone_set函数来设置正确的时区。例如,如果您希望使用东八区的北京时间,可以使用以下代码进行设置:
  2. 时区设置不正确:PHP的默认时区设置可能与您所期望的时区不一致。您可以使用date_default_timezone_set函数来设置正确的时区。例如,如果您希望使用东八区的北京时间,可以使用以下代码进行设置:
  3. 日期时间字符串格式不正确:strtotime函数对日期时间字符串的格式有一定的要求。如果传入的字符串格式不正确,strtotime可能无法正确解析。请确保传入的日期时间字符串符合PHP所支持的格式,例如:"Y-m-d H:i:s"。
  4. 日期时间字符串中没有包含时区信息:strtotime函数无法自动识别日期时间字符串中的时区信息。如果您的日期时间字符串没有明确指定时区,strtotime将默认使用PHP的时区设置。因此,建议在日期时间字符串中明确指定时区信息,例如:"Y-m-d H:i:s P",其中P表示时区偏移量。
  5. 时区转换问题:strtotime函数将日期时间字符串转换为Unix时间戳时,不会进行时区转换。它将日期时间字符串解析为一个时间戳,而不考虑时区的影响。如果您需要进行时区转换,可以使用date函数结合DateTime对象来实现。例如,以下代码将日期时间字符串转换为指定时区的时间戳:
  6. 时区转换问题:strtotime函数将日期时间字符串转换为Unix时间戳时,不会进行时区转换。它将日期时间字符串解析为一个时间戳,而不考虑时区的影响。如果您需要进行时区转换,可以使用date函数结合DateTime对象来实现。例如,以下代码将日期时间字符串转换为指定时区的时间戳:

总结起来,strtotime函数没有给出正确的时区转换可能是由于时区设置不正确、日期时间字符串格式不正确、日期时间字符串中没有包含时区信息或者时区转换问题。在处理日期时间时,确保正确设置时区、使用正确的日期时间字符串格式以及明确指定时区信息是非常重要的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

告别相差8小时问题,在 WordPress 正确使用 Date 和 Time

,是因为 WordPress 提供了两个时区函数,他们能够正确返回后台设置时区: wp_timezone_string() 用于获取当前站点时区,后台无论是通过 timezone_string(比如...wpjam_strtotime 前面解决了在 WordPress 中基于时间戳正确显示时间问题,然后还有一个常见操作就是将日期转换为日期戳,PHP 提供了一个 strtotime 函数: echo...所以为了方便将当地时间正确转换成时间戳,所以我写了一个函数 wpjam_strtotime: function wpjam_strtotime($string){ return date_create...进行日期和时间转换成时间戳操作时候,把 strtotime 函数替换成 wpjam_strtotime 函数即可。...将日期和时间转换成时间戳时候:把 strtotime 函数替换成 wpjam_strtotime 函数。

75030

php 学习笔记之日期时间操作一箩筐

说明 返回给定时间戳格式化后所产生日期时间字符串,如果没有给出时间戳则默认使用本地当前时间....> 日期转化时间戳 time : 返回当前 Unix 时间戳 场景 获取当前日期时间或特定日期时间时间戳,常用于日期时间之间相互转换....> strtotime : 将任何字符串日期时间描述解析为 Unix 时间戳 场景 将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期....说明 本函数预期接受一个包含美国英语日期格式字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起秒数,其值相对于 now 参数给出时间,如果没有提供此参数则用系统当前时间...strtotime() : 将字符串形式日期时间转换成时间戳 最后,文档那么齐全,不懂就去多看看,忘记有啥方法全靠 ide 智能提示就好,多用用就会慢慢熟练.

1.7K60

常用模块~PHP时间戳与日期.

echo "当前系统时间戳:".time(); //秒数 //mktime -- 给我一个年月日时分秒,我返还给你一个时间戳,用非常少 echo "获取指定日期2033-2-12时间戳:".mktime..."获取3天前时间戳:".strtotime('-3 day'); echo "获取3天后时间戳:".strtotime('3 day'); 第2章 在 PHP 中获取日期和时间 getdate -...格式:array getdate ( [int timestamp] ) 返回一个根据 timestamp 得出包含有日期信息结合数组。如果没有给出时间戳则认为是当前本地时间。...如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选,默认值为 time()(当前时间戳)。...修改PHP默认时区有两种方式: 1、修 php.ini 配置文件:**date.timezone = PRC** 2、**date_default_timezone_set( ):** -- 设定用于一个脚本中所有日期时间函数默认时区

3.5K00

PHP获取当前系统时间方法小结

time() 返回当前时间 Unix 时间戳,没有参数。 strtotime(time, now) 将任何英文文本日期时间描述解析为 Unix 时间戳。...;输出结果:2018-10-03 23:00:00 echo date(‘Y-m-d’, time());输出结果:2018-10-03 23:00:00(结果同上,只是多了一个时间戳参数)(时间戳转换为日期格式方法...’));输出结果:(结合date(),结果同上)(时间日期转换为时间戳) strtotime()还有个很强大用法,参数可加入对于数字操作、年月日周英文字符,示例如下: echo date(‘Y-m-d...php获取当前时间毫秒数 php本身没有提供返回毫秒数函数,但提供了microtime()方法,它会返回一个数组,包含两个元素:一个是秒数、一个是小数表示毫秒数,我们可以通过此方法获取返回毫秒数...Shanghai,即 date.timezone = Asia/Shanghai(将当前时区设置为亚洲上海时区) 2.在程序开始地方添加 date_default_timezone_set(‘Asia

6.2K20

php 学习笔记之日期时间操作 原

说明 返回给定时间戳格式化后所产生日期时间字符串,如果没有给出时间戳则默认使用本地当前时间....> 日期转化时间戳 > time : 返回当前 Unix 时间戳 场景 获取当前日期时间或特定日期时间时间戳,常用于日期时间之间相互转换....> > strtotime : 将任何字符串日期时间描述解析为 Unix 时间戳 场景 将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期....说明 本函数预期接受一个包含美国英语日期格式字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起秒数,其值相对于 now 参数给出时间,如果没有提供此参数则用系统当前时间...strtotime() : 将字符串形式日期时间转换成时间戳 最后,文档那么齐全,不懂就去多看看,忘记有啥方法全靠 ide 智能提示就好,多用用就会慢慢熟练.

1.9K50

PHP获取当前系统时间办法小结

time() 返回当前时间 Unix 时间戳,没有参数。 strtotime(time, now) 将任何英文文本日期时间描述解析为 Unix 时间戳。...date(‘Y-m-d’, time());输出结果:2018-10-03 23:00:00(结果同上,只是多了一个时间戳参数)(时间戳转换为日期格式办法) echo?...结合date(),结果同上)(时间日期转换为时间戳) strtotime()还有个很强大用法,参数可加入对于数字操作、年月日周英文字符,示例如下: echo date(‘Y-m-d H:i:s’...php获取当前时间毫秒数 php本身没有提供返回毫秒数函数,但提供了microtime()办法,它会返回一个数组,包含两个元素:一个是秒数、一个是小数表示毫秒数,我们可以通过此办法获取返回毫秒数...Shanghai,即 date.timezone = Asia/Shanghai(将当前时区设置为亚洲上海时区) 2.在程序开始地方添加 date_default_timezone_set(‘Asia

6.2K21

php常用日期时间函数实例小结

时间戳格式化 1、date(format,timestamp):在当前使用时区下格式化时间戳 2、gmdate(format,timestamp):指定UTC时区下格式化时间戳,不论用户使用什么时区...时区概念:时区是按照地点设置时间,中国属于东8区,所以比UTC(格林尼治时间)要快8个小时 获取和设置时区 date_default_timezone_get()//获得当前使用时区,默认情况下应该是...php echo strtotime("2016-7-8 19:15:0");//获取2016年8月7日19时15分0秒时间戳 echo strtotime("now");//获取现在得时间戳...echo strtotime("+1 day");//当前时间往后推一天时间戳 echo strtotime("-1 day");//当前时间往前推一天时间戳 ?...tools.zalou.cn/jisuanqi/datecalc 在线日期天数差计算器: http://tools.zalou.cn/jisuanqi/onlinedatejsq Unix时间戳(timestamp)转换工具

4.3K31

PHP时间函数使用详解

PHP开发中,关于时间函数使用基本上可以说是无处不在,而PHP中操作时间方法也很多,比如PHP时间戳、日期与时间戳之间转换、获取当前日期、当前时间之前或之后时间等等,下面我们详细讲述一下PHP中各种时间函数使用...time() 返回当前时间 Unix 时间戳,没有参数。 strtotime(time, now) 将格式化日期时间或任何英文文本日期时间描述解析为 Unix 时间戳。...php获取当前时间毫秒数 php本身没有提供返回毫秒数函数,但提供了microtime()方法,它会返回一个数组,包含两个元素:一个是秒数、一个是小数表示毫秒数,我们可以通过此方法获取返回毫秒数...8小时,这是由于在PHP配置里默认是以0时区时间为基准,而我们位于东8区,与0时区相差八小时,所以在实际开发中使用到时间时间,要特别注意设置好时区,设置方法主要有下面的几种: 1.在php.ini...中找到date.timezone,将它值改成 Asia/Shanghai,即 date.timezone = Asia/Shanghai(将当前时区设置为亚洲上海时区) 2.在程序开始地方添加 date_default_timezone_set

4.8K21

PHP获取当前时间、年份、月份、日期和天数

语法: date(format,timestamp) 其中参数 format 为显示格式,参数 timestamp 为时间戳,是可选择,默认为 time() ,即如果没有给出时间戳则使用本地当前时间。...获得时区: 如果需要基于具体位置准确时间,可以设置要用时区。 下面是把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间: 实例: getdate:获取日期信息 通过 getdate() 函数可以获取日期信息,而该函数返回值为一个数组,其中包括指定日期和时间信息。如果没有给出时间戳,则输出是本地当前日期和时间。...> 运行结果: 创建日期是:2015-06-10 09:12:31AM 通过 PHP strtotime() 用字符串来创建日期 PHP strtotime() 函数用于把人类可读字符串转换为 Unix...> PHP 在将字符串转换为日期这方面非常聪明,所以您能够使用各种值: 实例: <?

23.2K10

PHP时间戳和日期相互转换操作实例小结

分享给大家供大家参考,具体如下: 在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明。...1. php中时间转换函数 strtotime(date("Y-m-d H:i")) date("Y-m-d H:i",$unixtime) 2. php中获得今天零点时间戳 要获得零点unix时间戳...时间戳转换为日期 时间戳转换函数: date("Y-m-d H:i:s",time()),“Y-m-d H:i:s”是转换日期格式,time()是获得当前时间时间戳。...); //生成带格式日期 $oldtime = '2010-11-10 22:19:21'; $catime = strtotime($oldtime); //日期转换为时间戳 $nowtimes...("last Thursday")) 结果: 2018-12-13 00:00:00 注意:使用到时间戳与date日期设置时候不要忘记时区设置: date_default_timezone_set

1.2K31

WordPress评论时间显示为8小时前解决方法

8 小时时差,而后台评论时间是正确,也就是说后台时区设置对前台评论不起作用,又开始折腾了,跟群里大佬们交流,各种检查,找到了几种方法能搞定这个时间不对问题 在此之前,先用 Xshell 连接一下服务器...,使用 date 命令看下服务器时间是否正确 date 如果正确,按照下面的方法走 方法一 修改 php.ini,将默认时区改成: date.timezone = "Asia/Shanghai" 我这里时区直接设置...PRC,没什么问题,还改成 Asia 试了一下,依旧没有解决问题 方法二 在wp-config.php中加入: date_default_timezone_set('Asia/Shanghai');...strtotime(gmdate('Y-m-d H:i:s')) : strtotime(gmdate('Y-m-d H:i:s')) + ( get_option( 'gmt_offset' ) *...3600 ); 把之前代码注释掉,防止出错了你又不知道改是哪里,保存 funtions.php 文件后,去前台看看评论中时间已经正确了,这里还需要注意是,用以上代码修改后,服务器端 php.ini

2.7K40

PHP 实现时间戳转化为几分钟前、几小时前等格式

二.封装时间转换函数,大体都是按照业务来,小伙伴们可以在优化function get_last_time($time) 三.如果需要几周前、几月前啥可以自己调一下比较时间即可。...这段代码放到线上后, 出现了奇怪BUG, 明明是当天注册用户, 却出现了有次日登录情况. 排查代码没有发现问题, 于是暂时搁置去忙其它事情. 然后在第6天时, 竟然又出现了有七日登陆数据....于是开始和同事正式解决这个问题, 最终发现是由于函数时区原因导致,time() 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间秒数.上面是 time...当PHP设置过时区后, date() 在格式化时间操作中会将 (当前时区时间 - 格林威治时间) 偏移量自动添加进去, 按东八区时间算也就是8小时. strtotime() 同样会自动将时区偏移量加入处理操作中...所以这时上面代码中 strtotime($create_time) 得到同样是格林威治时间.

1.9K10

PHP中日期和时间处理函数详解

这些函数使得在不同时间格式之间进行转换,进行日期和时间计算以及格式化输出变得更加便捷。本文将深入探讨这三个函数用法和优势。...1. strtotime 函数strtotime函数用于将人类可读日期和时间字符串转换为 Unix 时间戳。它可以接受一个日期时间字符串作为参数,并尝试解析它并将其转换为对应 Unix 时间戳。...函数会尝试根据传入字符串进行合理日期时间转换,方便进行时间计算和比较。...$timezone:可选参数,用于设置解析后DateTimeImmutable对象时区。如果不指定,默认为null,表示使用服务器时区设置。...strtotime用于将字符串转换为 Unix 时间戳,date用于将时间戳格式化为可读字符串,而DateTimeImmutable::createFromFormat则允许更精确地解析日期字符串。

47820
领券