关于unixstamp的问题?有请各路高手,绝对不简单的问题

phplover 2003-06-13 10:24:37
大家知道:
date("Y-m-d H:i:s",0);
这样得到的是1970-01-01 08:00:00,也就是说date函数是根据系统时钟得到的日期和时间,现在我的问题就是:
要求根据某个时间戳记取得对应的日期和时间,这个日期和时间跟操作系统的时区没有关系,只跟你自己设置的时区参数有关系。
要求写一个函数,如:
function getDate($unixtime,$zoneNum=8){//这里$zoneNum是根据你所处地区的时区

}


搞定了100分
...全文
36 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
phplover 2003-06-16
  • 打赏
  • 举报
回复
不过少了一个括号而已
phplover 2003-06-16
  • 打赏
  • 举报
回复
不好意思
owen_young()第二个函数正确,不错。

哈哈,又学到一个函数gmdate,谢谢

给分
phplover 2003-06-16
  • 打赏
  • 举报
回复
Owen_Young() 的还是跟系统的时区有关系,所以不正确
Owen_Young 2003-06-15
  • 打赏
  • 举报
回复
<?php
function myDate($unixtime,$zoneNum=8) {
return gmdate("Y-m-d H:i:s",($unixtime+$zoneNum*3600);
}
phplover 2003-06-13
  • 打赏
  • 举报
回复
xuzuning(唠叨)的好像不对吧

如果有的时区为负值呢,而date("H",0)返回的值始终是正值
xuzuning 2003-06-13
  • 打赏
  • 举报
回复
<?php
function myDate($unixtime,$zoneNum=8) {
$h = date("H",0);
return date("Y-m-d H:i:s",$unixtime+($zoneNum-$h)*3600);
}
echo myDate(time()); // 2003-06-13 12:07:54
echo myDate(time(),0); // 2003-06-13 04:07:54
?>
ashchen 2003-06-13
  • 打赏
  • 举报
回复
两个相邻的时区之间不就是相差3600秒吗?呵呵
vivanboy 2003-06-13
  • 打赏
  • 举报
回复
换一个函数名吧,php已经有了

function getDateTime($unixtime,$zoneNum=8){
$t=$unixtime-date("Z")+$zoneNum*3600;
if($t>0)return date("Y-m-d H:i:s",$t);
else return -1;
}
echo getDateTime(time(),0);//GMT时间
echo "<BR>";
echo getDateTime(time());//北京时间
phplover 2003-06-13
  • 打赏
  • 举报
回复
现在的要求就是做到跟系统的时区没有关系
phplover 2003-06-13
  • 打赏
  • 举报
回复
也就是说date函数是跟系统的时区有关系的
Owen_Young 2003-06-13
  • 打赏
  • 举报
回复
<?php
function myDate($unixtime,$zoneNum=8) {
return date("Y-m-d H:i:s",($unixtime/3600+$zoneNum)*3600);
}
phplover 2003-06-13
  • 打赏
  • 举报
回复
用vivanboy(从不睡懒觉的鸟儿)的date("Z")比较准确

不过,还有没有其它比较经典的算法阿?一步一步来求,尽量不要根据php的时间函数来计算!

搞定了我开帖给分

这个帖应该算是比较经典的吧
phplover 2003-06-13
  • 打赏
  • 举报
回复
比方说在GMT时间1970-01-01 00:00:00的时候-1区的date("H",0)是23,你这里8-23就不正确了,8-23相差15个小时,而实际上只是相差8-(-1)=9个小时
phplover 2003-06-13
  • 打赏
  • 举报
回复
我在手册上看的阿,明明是:
H - hour, 24-hour format; i.e. "00" to "23"
就是00-23,根本没有负值,也不是什么服务器端的时差。

你这里指的时差是什么?

比方说1970-1-1 00:00:00的时候-1区的date("H",0)是23,你这里8-23就不正确了
xuzuning 2003-06-13
  • 打赏
  • 举报
回复
date("H",0) 返回的是服务器端的时差
要从给定的时区中扣除的$zoneNum-$h
phplover 2003-06-13
  • 打赏
  • 举报
回复
vivanboy(从不睡懒觉的鸟儿)的函数可以

还有没有其他方法,各位继续

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧