DateTime::setTimestamp

date_timestamp_set

(PHP 5 >= 5.3.0)

DateTime::setTimestamp -- date_timestamp_setSets the date and time based on an Unix timestamp

Descrizione

Stile orientato agli oggetti

public DateTime DateTime::setTimestamp ( int $unixtimestamp )

Stile procedurale

DateTime date_timestamp_set ( DateTime $object , int $unixtimestamp )

Sets the date and time based on an Unix timestamp.

Elenco dei parametri

oggetto

Solo per lo stile procedurale: Un oggetto DateTime restituito da date_create(). La funzione modifica questo oggetto.

unixtimestamp

Unix timestamp representing the date.

Valori restituiti

Restituisce l'oggetto DateTime per il metodo chaining o FALSE in caso di fallimento.

Esempi

Example #1 DateTime::setTimestamp() example

Stile orientato agli oggetti

<?php
$date 
= new DateTime();
echo 
$date->format('U = Y-m-d H:i:s') . "\n";

$date->setTimestamp(1171502725);
echo 
$date->format('U = Y-m-d H:i:s') . "\n";
?>

Stile procedurale

<?php
$date 
date_create();
echo 
date_format($date'U = Y-m-d H:i:s') . "\n";

date_timestamp_set($date1171502725);
echo 
date_format($date'U = Y-m-d H:i:s') . "\n";
?>

The above examples will output something similar to:

1272508903 = 2010-04-28 22:41:43
1171502725 = 2007-02-14 20:25:25

Note

Using the Unix timestamp format to construct a new DateTime object is an alternative when using PHP 5.2, as shown in the example below.

Example #2 DateTime::setTimestamp() alternative in PHP 5.2

<?php
$ts 
1171502725;
$date = new DateTime("@$ts");
echo 
$date->format('U = Y-m-d H:i:s') . "\n";
?>

Il precedente esempio visualizzerĂ  qualcosa simile a:

1171502725 = 2007-02-14 20:25:25

Vedere anche:

add a note add a note

User Contributed Notes 3 notes

up
1
Use Web Form at Aouie.net
4 years ago
When the exact time is important then it is important to note the difference between this and the UnixTimeStamp. The function will change the timestamp if necessary to take into account the daylight savings time.
e.g. Working with the 'Europe/London' timezone and setting the DateTime object to a timestamp of 1288486753 will result in the function automatically altering it to 1288490353.
This is because it is taking the fall time instead of the summer time (they will both be Sun, 31-Oct-2010 01:X:Y (I didn't check the hour and minute)).
Sincerely,
Aouie
up
0
Arnb
1 year ago
When you need to manipulate a unix timestamp like field (seconds since 1970-01-01) that may be greater than the drop dead date of 2038-01-19.

<?php

function secs2date($secs,$date)
    {
    if (
$secs>2147472000)    //2038-01-19 expire dt
       
{
       
$date->setTimestamp(2147472000);
       
$s=$secs-2147472000;
       
$date->add(new DateInterval('PT'.$s.'S'));
        }
    else
       
$date->setTimestamp($secs);
    }

function
date2secs($date,$datebeg)
    {
   
$diff = $datebeg->diff($date);
   
$secs=$diff->format('%a') * (60*60*24);  //total days
   
$secs+=$diff->format('%h') * (60*60);     //hours
   
$secs+=$diff->format('%i') * 60;              //minutes
   
$secs+=$diff->format('%s');                     //seconds
   
return $secs;
    }

$datebeg = new DateTime('1970-01-01');
$date=new dateTime();

$secs=2017472000//2033-12-06 08:53:20
secs2date($secs,$date);
$dt=$date->format('Y-m-d H:i:s');
echo
$dt."<br>";
$sec2=date2secs($date,$datebeg);
echo
'(1) ',$sec2,'***',$secs,'<br>';

$secs=2397472000; //2045-12-21 12:26:40
secs2date($secs,$date);
$dt=$date->format('Y-m-d H:i:s');
echo
$dt."<br>";
$sec2=date2secs($date,$datebeg);
echo
'(2) ',$sec2,'***',$secs,'<br>';
?>
up
0
linblow at hotmail dot fr
3 years ago
If your PHP version is lower than 5.3 then you can use this class to be able to use the functions "setTimestamp" and "getTimestamp":

<?php

class MyDateTime extends DateTime
{
    public function
setTimestamp( $timestamp )
    {
       
$date = getdate( ( int ) $timestamp );
       
$this->setDate( $date['year'] , $date['mon'] , $date['mday'] );
       
$this->setTime( $date['hours'] , $date['minutes'] , $date['seconds'] );
    }
   
    public function
getTimestamp()
    {
        return
$this->format( 'U' );
    }
}

$date = new MyDateTime();
$date->setTimestamp( $someTimestamp );

echo
$date->format( 'd/m/Y H:i:s' );

?>
To Top