将Unix时间戳转换为时区?

时间:2013-05-25 14:21:36

标签: php unix datetime timezone timestamp

我的unix时间戳设置为+5,但我想将其转换为-5,EST标准时间。我只是在那个时区生成时间戳,但是我从其他来源抓取它,它将它放在+5。

当前未修改的时间戳被转换为日期

<? echo gmdate("F j, Y, g:i a", 1369490592) ?>

4 个答案:

答案 0 :(得分:35)

使用DateTimeDateTimeZone

$dt = new DateTime('@1369490592');
$dt->setTimeZone(new DateTimeZone('America/Chicago'));
echo $dt->format('F j, Y, g:i a');

答案 1 :(得分:0)

由于John Conde's answer的编辑队列已满,我将添加更详细的答案。

来自DateTime::__construct(string $time, DateTimeZone $timezone)

  

$ timezone参数和当前时区被忽略时   $ time参数要么是UNIX时间戳(例如@ 946684800)......

这是从unix时间戳创建DateTime个对象时应始终指定时区(甚至是默认值)的主要原因。请参阅受John Conde's answer启发的解释代码:

$dt = new DateTime('@1369490592');

// use your default timezone to work correctly with unix timestamps
// and in line with other parts of your application
date_default_timezone_set ('America/Chicago'); // somewhere on bootstrapping time
…
$dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));

// set timezone to convert time to the other timezone
$dt->setTimeZone(new DateTimeZone('America/Chicago'));

echo $dt->format('F j, Y, g:i a');

答案 2 :(得分:0)

更容易这样做的方法是:

使用gmdate("F j, Y, g:i a", 1369490592+19800)时,请将您的时区(以秒为单位)添加到gmdate中的unix_stamp。

考虑我的时区是GMT + 5:30。所以 5小时30分钟以秒为单位 19800

所以,我会这样做:

 if ([amount.text isEqualToString:@""] || [chargeAmount floatValue] == 0.0) {

答案 3 :(得分:0)

这里有一个功能,将unix / gmt / utc时间戳转换为所需的时区

.grid-container 
{
 display: grid;
 grid-template-columns: repeat(1, 50px);
 grid-template-rows: repeat(2, 50px);
 grid-gap: 1px;
 padding: 0px;
 align-items: center;
}
  
.material-icons
{
   text-align:center;
}