1

我有一个带有任意时区的 ISO8601 字符串。我不想转换到我的时区。相反,我想保留原始时区。我希望能够格式化输出,类似于gmdate格式化日期/时间的方式。例如:

$output =  my_date_function( 'F d, ga', $thetime );

应该输出:

$thetime = '2012-09-24T21:00:00-0700';
     => September 24, 9pm

$thetime = '2012-09-24T21:00:00-0500';
     => September 24, 9pm
4

1 回答 1

1

我不知道它是否会起作用,但我认为 DateTime::createFromFormat 可以自动完成。您还可以创建一个确定时区的函数并使用它创建一个 DateTimezone 对象。 http://php.net/manual/en/datetime.createfromformat.php 根据文档:

如果省略 timezone并且 time 不包含 timezone,则将使用当前时区

代码:

$stime = '2012-09-24T21:00:00-0500';
$t = DateTime::createFromFormat(DateTime::ISO8601, substr($stime, 0, 19));
$output = $t->format('F d, ga');
于 2012-08-09T18:41:36.983 回答