嗨我正在使用php和sql通过odbc来编写一个程序而且我已经把abit卡在了我希望以格式日期显示当前日期/时间的部分('Ymd H:i:s)但是它只显示gmt时间。我想加8小时。你们中的任何人都能帮助我。非常感谢你们
答案 0 :(得分:2)
结帐date_default_timezone_set
。你可以这样做:
date_default_timezone_set('America/Los_Angeles');
print 'Current datetime is: ' . date('Y-m-d H:i:s');
您可以使用它将时区设置为您需要时间的任何时区,然后正常使用date
。或者,您可以使用strtotime
:
print 'Current datetime is: ' date('Y-m-d H:i:s', strtotime('+8 hours'));
答案 1 :(得分:0)
如果您正在寻找一种在用户当地时间显示时间戳的方法,可以使用JavaScript:
function showtime(t)
{
if (t == 0)
{
document.write("never");
return;
}
var currentTime = new Date(t);
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var seconds = currentTime.getSeconds();
document.write();
if (minutes < 10){
minutes = "0" + minutes;
}
if (seconds < 10){
seconds = "0" + seconds;
}
document.write(month + "/" + day + "/" + year + " " +
hours + ":" + minutes + ":" + seconds + " ");
if(hours > 11){
document.write("PM");
} else {
document.write("AM");
}
}
然后,如果您需要显示时间,只需在HTML中调用它并拼接PHP中的值:
<script type="text/javascript">showtime(<?=$time."000"?>)</script>
答案 2 :(得分:0)
我会避开时区方法。
如果我理解正确,你想增加时间,从而改变它。一个例子可能是,现在已经创建了一个任务,并且必须在8小时内完成。时区方法只会更改日期和时间的显示。如果您知道访问者的时区,则只更改时区设置,并且必须相对于他们显示日期时间。
现在:1234418228是2009/02/12 00:57:08在蒙特利尔或2009/02/11 09:57:08在旧金山。这是完全相同的时刻。
追加到第一个答案,date()和strtotime()是你的朋友。
strtotime(“+ 8小时”,现在$) $ now现在是它应该与之相关的时间戳。因此,如果你的开始时间不是时间(),你仍然可以使用它。例如
strtotime( "+8 hours", strtotime( "2009/03/01 00:00:00" ); (8AM on 2009/03/01)
然而,当处理数周或更短的间隔时,我更喜欢“以数学方式”
$StartTime = strtotime( "2009/03/01 13:00:00" );
$EndTime = $StartTime + ( 8 * 60 * 60 );
date( "Y/m/d H:i:s", $EndTime ) ==> "2009/03/01 21:00:00"
一小时3600秒,一天86400。
您不能将此方法用于数月,季度或年份,因为它们的持续时间从一个到另一个不同。
答案 3 :(得分:0)
如果您想将时间用于某个时区,则首选使用date_default_timezone_set()。无论如何你可以提供另一个parmater的date()函数:int timestamp。一个整数,表示您希望date()返回有关信息的时间戳。 所以如果你想现在显示日期('Y-m-d H:i:s'),你可以使用它:
$now = date('Y-m-d H:i:s', time() ); // time() returns current timestamp.
// if you omit the second parameter of date(), it will use current timestamp
// by default.
$_8hoursLater = date('Y-m-d H:i:s', time()+60*60*8 );
$_8hoursBefore = date('Y-m-d H:i:s', time()-60*60*8 );