UNIX Zaman Damgasını Biçimlendirilmiş Tarih Dizesine Dönüştürme


183

PHP kullanarak, buna benzer tarih dizelerine UNIX zaman damgalarını dönüştürmek istiyorum: 2008-07-17T09:24:17Z

Nasıl gibi bir zaman damgası dönüştürebilirim 1333699439için 2008-07-17T09:24:17Z?

Yanıtlar:


321

Şunu deneyin gmdate:

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

53
Lütfen gmdate()GMT'de tarih / saat döndürür. date()yerel tarih / saati döndürür.
Matt K

5
Yukarıdaki yorum bu bağlamda anlamlı değildir. Yanıtta gösterildiği gibi ikinci parametrenin zaman damgası olarak kullanılması, tarihi yerel saat diliminde yazdırmaz. Tarih, saat dilimi bilgileri yoksayılmış olarak yazdırılacaktır, çünkü zaman damgası saat dilimi bilgisine sahip değildir. gmdate ve 1333699439 olarak ikinci zaman damgası parametresiyle tarih aynı tarih saatini yazdıracaktır.
Tinus Tate

1
@MattK: Z, UTC'yi gösterdiğinden mantıklı. Tinus: Unix zaman damgaları saat dilimi ofsetleri içermez. dateve gmdateçıkışı TZ değişkenine göre değişecektir (en azından * nix'de)
Gert van den Berg


Bu cevabın, karşıt problemin çözümünü içermesi ve biçimlendirilmiş bir tarihi UNIX saatine dönüştürmesi de iyi olurdu.
Olle Härstedt

117

tarih işlevini kullan date ( string $format [, int $timestamp = time() ] )

date('c',time())ISO 8601 tarihine dönüştürmek için biçim olarak kullanın (PHP 5'e eklenmiştir) -2012-04-06T12:45:47+05:30

kullanmak date("Y-m-d\TH:i:s\Z",1333699439)için2012-04-06T13:33:59Z

Tarih işlevinin desteklediği bazı biçimler

<?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
?>

'c' ile belirli zaman damgasını nasıl dönüştürebilirim? örneğin 1333699439
Utku

bu çalışma tarihi ("Ymd \ TH: i: s \ Z", 1333699439) 2012-04-06EDT04: 03: 59-14400
Utku

@Ahmet - Dizeyi tanımlarken çift ve tek tırnak kullanımına dikkat edin
Mark Baker

1
@ user2060451 öncesinde ters eğik çizgi bulunan bir şey, elde edilen zaman dizesinde değişmez karakter olarak gösterilir
verbumSapienti

1
@ user2060451: Z'nin UTC saatini belirtmesi gerekiyor (bu durumda gmdate kullanılmalıdır ...) Favori araştırma kaynağınızdaki ISO8601 bilgilerine göz atın.
Gert van den Berg

56

PHP5.3 kullandığınızı varsayarsak, tarihleri ​​işlemenin modern yolu yerel DateTime sınıfıdır . Şu anki saati almak için

$currentTime = new DateTime();

Belirli bir zaman damgasından bir DateTime nesnesi oluşturmak için (yani şimdi değil)

$currentTime = DateTime::createFromFormat( 'U', $timestamp );

Biçimlendirilmiş bir dize almak için

$formattedString = $currentTime->format( 'c' );

Buradaki kılavuz sayfasına bakınız


1
bununla belirli bir zaman damgasını nasıl dönüştürebilirim? örneğin 1333699439
Utku

@Norse Elbette gönderisini okudum. İhtiyaç duyduğu tüm bilgiler yazıma girdi. Tek yapması gereken DateTime nesnesi için PHP belgelerini okumaktı. Daha da net hale getirmek için yayımı düzenledim. DateTime nesnesi PHP'ye gitmenin bir yoludur ve tüm yeni başlayanlar bunu kullanmaya teşvik edilmelidir. Henüz bu cevabı veren tek kişi benim. Btw Ben yorumunuzu biraz agresif ve SO ruhu içinde değil bulmak.
liquorvicar

@Ahmetvardar Tüm bunlar bir bağlantı sağladığım PHP belgelerinde olmasına rağmen düzenlememi görün. DateTime nesnesini kullanmaya başlamanızı şiddetle tavsiye ediyorum. Zaman dilimleri
vb.Dahil

18

Doğru sonucu almak için varsayılan bir saat dilimi ayarlamak çok önemlidir

<?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);
?> 

Çevrimiçi dönüşüm yardımı: http://freeonlinetools24.com/timestamp


2
ISO8601'de, Zbir UTC saati olduğunu belirtmek için kullanılır, bu nedenle saat dilimiUTC
Gert van den Berg

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

6
Bölme parçası olmadan çalışır. Aksi takdirde tarih varsayılan olarak 1970'tir.
Script47


1

Bu konuşmadaki bilgileri o kadar yararlı buldum ki, MySQL veritabanımdaki zaman damgasını ve biraz PHP'yi kullanarak nasıl anladığımı eklemek istedim

 <?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>

Çıktı: 2017-03-03T08: 22: 36 + 01: 00

Çok teşekkürler Stewe cevap verdiğin bir eureka benim için.


0

Gibi yapabilirsin .....

$originalDate = "1585876500";

echo $newDate = date("Y-m-d h:i:sa", date($originalDate));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.