Hubert
Hubert

Reputation: 443

Getting time and date from timestamp with php

In my database I have a time stamp column...which reflects a format like this: 2012-04-02 02:57:54

However I would like to separate them up into $date and $time.

After some research through the php manual...I found that date(), date_format() and strtotime() are able to help me to separate them...(not sure if I am right)

But I am not very sure of how to code it out...

In my php file...the timestamp extracted would be $row['DATETIMEAPP'].

Will

$date = strtotime('d-m-Y',$row['DATETIMEAPP']);
$time = strtotime('Gi.s',$row['DATETIMEAPP']);

or

$date = date('d-m-Y',$row['DATETIMEAPP']);

work?

Can I use date() to get the time as well??

Thanks in advance

Upvotes: 26

Views: 131756

Answers (8)

AuRise
AuRise

Reputation: 2452

If you want to use the DateTime class, you can do so like this:

$timestamp = $row['DATETIMEAPP']; // String formatted as "2012-04-02 02:57:54"

// Create DateTime object from custom timestamp
$dt = DateTime::createFromFormat('Y-m-d H:i:s', $timestamp);

$date = $dt->format('d-m-Y'); // String variable of just the date
$time = $dt->format('H:i:s'); // String variable of just the time

And if you're concerned about using DateTime over strtotime() or date(), I'd like to point you in the direction of this conversation on StackOverflow titled "DateTime class vs. native PHP date-functions."

Upvotes: 0

Tushar Nitave
Tushar Nitave

Reputation: 577

You can try this:

For Date:

$date = new DateTime($from_date);
$date = $date->format('d-m-Y');

For Time:

$time = new DateTime($from_date);
$time = $time->format('H:i:s');

Upvotes: 2

Ivan Laharnar mink.si
Ivan Laharnar mink.si

Reputation: 479

Works for me:

select DATE( FROM_UNIXTIME( columnname ) ) from tablename;

Upvotes: 0

zzapper
zzapper

Reputation: 5043

$timestamp='2014-11-21 16:38:00';

list($date,$time)=explode(' ',$timestamp);

// just time

preg_match("/ (\d\d:\d\d):\d\d$/",$timestamp,$match);
echo "\n<br>".$match[1];

Upvotes: 1

Ankit Bansal
Ankit Bansal

Reputation: 2348

If you dont want to change the format of date and time from the timestamp, you can use the explode function in php

$timestamp = "2012-04-02 02:57:54"
$datetime = explode(" ",$timestamp);
$date = $datetime[0];
$time = $datetime[1];

Upvotes: 10

Robert Lattery
Robert Lattery

Reputation: 53

$mydatetime = "2012-04-02 02:57:54";
$datetimearray = explode(" ", $mydatetime);
$date = $datetimearray[0];
$time = $datetimearray[1];
$reformatted_date = date('d-m-Y',strtotime($date));
$reformatted_time = date('Gi.s',strtotime($time));

Upvotes: 2

Slava Rozhnev
Slava Rozhnev

Reputation: 10163

Optionally you can use database function for date/time formatting. For example in MySQL query use:

SELECT DATE_FORMAT(DATETIMEAPP,'%d-%m-%Y') AS date, DATE_FORMT(DATETIMEAPP,'%H:%i:%s') AS time FROM yourtable

I think that over databases provides solutions for date formatting too

Upvotes: -1

Andreas Wong
Andreas Wong

Reputation: 60506

$timestamp = strtotime($row['DATETIMEAPP']);

gives you timestamp, which then you can use date to format:

$date = date('d-m-Y', $timestamp);
$time = date('Gi.s', $timestamp);

Alternatively

list($date, $time) = explode('|', date('d-m-Y|Gi.s', $timestamp));

Upvotes: 71

Related Questions