Permalänk
Medlem

[php] Dela upp ett ord...

Variablen $time har värdet: 20030101231659

Jag vill dela upp det så att det blir

$year = "2003"; //alltså de fyra första siffrorna $month = "01"; //de nästa två $day = "01"; //följande två siffror $hour = "23"; //följande.... $minute = "16"; //... $seconds = "56"; //....

Finns det någon bra funktion för att dela upp detta kanske?

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

<?php
$val = date("Y m d H i s",$time);
$vals = explode(" ", $val);
$year = $vals[0];
$month = $vals[1];
$day = $vals[2];
$hour = $vals[3];
$minutes = $vals[4];
$seconds = $vals[5];
?>

Permalänk
Medlem

Ahhh nej nu blir det fel...

$time har fått sitt värde från en databas, det är inte datumet/tiden jsut nu utan det är redan satt...

Jag vill bara dela upp det...

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

men alltså, kolla syntaxen för date!

string date ( string format [, int timestamp ] )

Om man anger timestamp så får man ut variablerna för den tiden istället för den aktuella tiden.

Permalänk
Medlem

date("Y m d H i s",$time); ger mig 2038 01 19 04 14 07 på alla värden för $time...

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

oj, jag som såg fel. trodde $time var ett unix-timestamp

<?php $time = "20030101231659"; $year = substr($time,0,4); $month = substr($time,4,2); $day = substr($time,6,2); $hour = substr($time,8,2); $minute = substr($time,10,2); $seconds = substr($time,12); print $year."-".$month."-".$day." ".$hour.":".$minute.":".$seconds; ?>

det fungerar. har testat.

Permalänk
Medlem

$year = substr($time, 0, 4); $month = substr($time, 4, 2); $day = substr($time, 6, 2); $hours = substr($time, 8, 2); $mins = substr($time, 10, 2); $secs = substr($time, 12, 2);

Fungerar bättre.

date("Y m d H i s",$time);

Fungerar tydligen inte när det är hämtat från en databas.

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

tror man måste ha unixtimestamp till time, du kan lösa det på följande sätt tex:

SELECT UNIX_TIMESTAMP(timecolumn) FROM...
$tid = $time_from_db

eller
$tid = strtotime ($time)

list ($year, $month, $day, $hour, $minut, $sec) = explode (" ", time ("Y m d H i s", $tid));

hoppas de inte vart för virrigt nu

Visa signatur

Hej

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av AddeFan
oj, jag som såg fel. trodde $time var ett unix-timestamp

<?php $time = "20030101231659"; $year = substr($time,0,4); $month = substr($time,4,2); $day = substr($time,6,2); $hour = substr($time,8,2); $minute = substr($time,10,2); $seconds = substr($time,12); print $year."-".$month."-".$day." ".$hour.":".$minute.":".$seconds; ?>

det fungerar. har testat.

Japp hittade det med.

I stället för:

print $year."-".$month."-".$day." ".$hour.":".$minute.":".$seconds;

Kan man använda:

sprintf("%04d-%02d-%02d %02d:%02d:%02d" , $year, $month, $day, $hours, $mins, $secs)

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

$year = substr($mysql_timestamp, 0, 4); $month = substr($mysql_timestamp, 4, 2); $day = substr($mysql_timestamp, 6, 2); $hours = substr($mysql_timestamp, 8, 2); $mins = substr($mysql_timestamp, 10, 2); $secs = substr($mysql_timestamp, 12, 2); $date_time = sprintf("%04d-%02d-%02d %02d:%02d:%02d" , $year, $month, $day, $hours, $mins, $secs) ; $unix_date = strtotime ($date_time) ;

Fungerar också för att få det till unix timestamp

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem

mmm, om man har en hel sträng. annars kan man köra mktime()