将UNIX时间戳转换为格式化日期字符串

Utk*_*maz 173 php unix-timestamp

使用PHP,我想将UNIX时间戳转换为类似于此的日期字符串: 2008-07-17T09:24:17Z

如何转换的时间戳,如13336994392008-07-17T09:24:17Z

ste*_*ewe 293

试试gmdate这样:

<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`gmdate()`返回GMT中的日期/时间.`date()`将返回本地日期/时间. (48认同)
  • 以上评论在这方面没有意义.使用带有第二个参数的日期作为时间戳,如答案所示,将不会在本地时区中打印日期.将打印日期时忽略时区信息,导致时间戳没有时区信息.gmdate和带有第二个时间戳参数的日期为1333699439将打印相同的日期时间. (5认同)
  • @MattK:这是有道理的,因为 Z 表示 UTC。Tinus:Unix 时间戳不包含时区偏移量。`date` 和 `gmdate` 的输出将根据 TZ 变量而有所不同(至少在 *nix 上) (2认同)

San*_*nne 111

使用日期功能 date ( string $format [, int $timestamp = time() ] )

使用date('c',time())的格式转换为ISO 8601日期(PHP 5中添加) -2012-04-06T12:45:47+05:30

date("Y-m-d\TH:i:s\Z",1333699439)得到2012-04-06T13:33:59Z

以下是日期功能支持的一些格式

<?php
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>
Run Code Online (Sandbox Code Playgroud)


liq*_*car 53

假设您使用的是PHP5.3,那么处理日期的现代方法是通过本机DateTime类.要获得当前时间,您可以致电

$currentTime = new DateTime();
Run Code Online (Sandbox Code Playgroud)

从特定时间戳创建DateTime对象(即不是现在)

$currentTime = DateTime::createFromFormat( 'U', $timestamp );
Run Code Online (Sandbox Code Playgroud)

要获得格式化的字符串,您可以调用

$formattedString = $currentTime->format( 'c' );
Run Code Online (Sandbox Code Playgroud)

请参见此处手册页

  • 我怎样才能用这个转换特定的时间戳?例如1333699439 (2认同)

小智 15

设置默认时区以获得正确的结果非常重要

<?php
// set default timezone
date_default_timezone_set('Europe/Berlin');

// timestamp
$timestamp = 1307595105;

// output
echo date('d M Y H:i:s Z',$timestamp);
echo date('c',$timestamp);
?> 
Run Code Online (Sandbox Code Playgroud)

在线转换帮助:http://freeonlinetools24.com/timestamp

  • 在ISO8601中,“ Z”用于表示它是UTC时间,因此时区应设置为“ UTC”。 (2认同)

小智 9

DateTime 类在构造函数中采用一个字符串。如果您在时间戳前面加上 @ 字符,则会创建一个带有时间戳的 DateTime 对象。对于格式化,请使用“c”格式...预定义的 ISO 8601 复合格式。

如果可以使用像这样的 DateTime 类...设置正确的时区,或者如果您想要 UTC 时间,则将其省略。

$dt = new DateTime('@1333699439');
$dt->setTimezone(new DateTimeZone('America/New_York'));
echo $dt->format('c');
Run Code Online (Sandbox Code Playgroud)


sun*_*nil 8

<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>
Run Code Online (Sandbox Code Playgroud)

  • 无需分割部分即可工作。否则日期默认为 1970 年。 (6认同)
  • 我从外部 API 获取值,如下所示:“1623923723000”。在这种情况下,需要分割部分才能获得正确的日期:'2021-06-17 11:55:23'。感谢您分享解决方案。 (2认同)

小智 6

$unixtime_to_date = date('jS F Y h:i:s A (T)', $unixtime);
Run Code Online (Sandbox Code Playgroud)

这应该工作.


小智 6

你可以像......

$originalDate = "1585876500";

echo $newDate = date("Y-m-d h:i:sa", date($originalDate));
Run Code Online (Sandbox Code Playgroud)