date/tijd formatten naar NL

Status
Niet open voor verdere reacties.

That Guy

Meubilair
Lid geworden
28 nov 2006
Berichten
5.010
Hier ben ik, alweer....
Vorrige vraag had ik dezelfde fout, namelijk het feit dat de server tijd anders is dan de NL-e tijd.

De tijd (en dus datum ook) is +12 uur, dus eigenlijk wil ik alle tijden EN alle data -12 uur hebben
PHP:
// uit de database plukken en neerzetten
echo $r->date." / ".$r->time;
//dit moet dus allebij -12 uur..
ik heb al geprobeert de gmdate() en andere tijd/datum functies te gebruiken, maar het lukt allemaal niet.


Groet, vegras.:thumb:
 
die had ik zelf ook al gevonden, maar het moet met mijn ingevoerde tijd/date...(wil een functie-tje ofzo, =makkelijk)
Het lukt me alleen niet , goed te krijgen

voorbeeld input:
13-12-2007 om 05:02
moet dus worden
12-12-2007 om 17:02



PHP:
Function GetDate($input, $tvs){

$tijdverschil = $tvs;

//$uur = Date("H") - $tijdverschil;
//$min = Date("i");
// hier iets met $input, die komt als date of als tijd.... mischien 2 functies?

if ($uur > 24){
	$uur = $uur - 24; 
}Else if($uur < 0){
	$uur = $uur + 24;
}
$tijd = $uur . ":" . $min;
echo $tijd;

}
 
Als je met de UNIX-timestamp gaat werken dan hoef je die alleen maar in je DB op te slaan, kun je daarna allerlei bewerkingen er op maken...

Je hebt nu de datum en de tijd in 2 velden, lijkt mij niet echt handig wanneer je er veranderingen in aan wilt brengen...

Wil je nu 12 uur er vanaf halen dan moet je eerst bij de tijd zijn, maar ja als die zorgt dat je dan eigenlijk ook nog een dag eerder moet zijn dan moet je daarna nog weer de datum aanpassen.
 
dat dacht ik al... maar heb geen zin om mijn DB aan te gaan passen. Dan maar verkeerde tijden... (of een andere host :p)

Anywho bedankt voor de hulp! :)
 
Of je moet voordat je het opslaat in de database de data aanpassen.
 
dat komt toch op hetzelfde neer als het tijdens het bekijken veranderen? :confused:

Maar als iemand toevallig een functietje heeft liggen, waarmee en te tijd en de datum aangepast worden, graag. :D
 
Tuurlijk niet, als jij van te voren de datum en tijd als 1 stuk hebt kun je daarna het opdelen in datum en tijd.
 
ja, okay, op die manier... maar das met de UNIX stamp...
 
Hoezo is het dan in UNIX? Je kunt dan gewoon date() gebruiken

Daarnaast kun je die UNIX-timestamp ook gewoon omzetten naar een gangbare notatie...
 
zoiets bedoel je?

PHP:
date("d-m-Y H:i")

Daarnaast kun je die UNIX-timestamp ook gewoon omzetten naar een gangbare notatie...
Weet ik :)


Wat mischien wel kan is gewoon beide (zie php-date-hierboven) in het veld "datum" opslaan en dan het veld "tijd" weglaten... Het probleem is alleen dat er al best veel data in de tabel staat en die aangepast moet worden.



EDIT:
Ik heb toch maar een funcite geschreven. Kan iemand zien of-ie klopt? Ik heb er zelf geen fouten in kunnen vinden... Zo nee, heeft iemand een beter idee voor de SWITCH die kijkt naar de hoeveelheid dagen in de maand?
PHP:
<?php

$time = "10:32";
$date = "01-11-2007";

$hours = substr($time, 0, 2);  // geeft 10
$minutes = substr($time, 3, 2); // geeft 32
$day = substr($date, 0, 2); // geeft 01
$month = substr($date, 3, 2); // geeft 11
$year = substr($date, 6, 4); // geeft 2007

if($hours > 12){
	// stel de tijd is 13:00 uur, dan kan er gewoon 12 van af...
	$hours = $hours - 12;
}else{
	// zo niet, moet de tijd 12 uur terug EN de dag 1 terug...
	$hours = abs($hours - 12);  // pak de ABSOLUTE waarde (dus niet -2:32 ofzo)
	$day = $day -1;
		if($day < 1){
			//als de dag 0 is, moet er een maand terug
			$month = $month - 1;
				switch($month){
					case 1: $day = 31; break;
					case 2: $day = 29; break;
					case 3: $day = 31; break;
					case 4: $day = 30; break;
					case 5: $day = 31; break;
					case 6: $day = 30; break;
					case 7: $day = 31; break;
					case 8: $day = 30; break;
					case 9: $day = 31; break;
					case 10: $day = 30; break;
					case 11: $day = 31; break;
					case 12: $day = 30; break;
				}
				if($month < 1){
					// maand < 0, dus jaar terug
					$year = $year - 1;
					$month = 12;
				}
		}
}
echo $time ." is geconverteerd (-12): ".$hours.":".$minutes;
echo "<br>";
echo $date ." is geconverteerd (-12): ".$day."-".$month."-".$year;
?>
 
Laatst bewerkt:
Heeft iemand een beter idee voor de SWITCH die kijkt naar de hoeveelheid dagen in de maand?

PHP:
switch($maand) //check es of maand met 0 of 1 begint, naar jouw voorbeeld ga ik van 1 uit
{
    case 2: $day = 28; //checken op schrikkeljaar ?
        break;
    case 4:
    case 6:
    case 9:
    case 11: $day = 30;
        break;
    default: $say = 31;
        break;
}
 
aight, dank je :cool::)


ps. schrikkeljaar zal wel :p
 
Laatst bewerkt:
PHP:
default:
  $day = 31;
break;
;)

Volgens mij is dit nogsteeds aardig omslachtig.
In het weekend zal ik het een en ander uitzoeken.
 
yea, ik zag die spelfout al ;)


anywho - het is dan mischien omslachtig, maar deze code heb ik nu, en hij werkt niet.

PHP:
$time = $r->ltime;
$date = $r->ldate;


$hours = substr($time, 0, 2); 
$minutes = substr($time, 3, 2);
$day = substr($date, 0, 2);
$month = substr($date, 3, 2);
$year = substr($date, 6, 4);

if($hours > 12){
	// stel de tijd is 13:00 uur, dan kan er gewoon 12 van af...
	$hours = $hours - 12;
		if(strlen($hours) < 2){
			$hours = "0".$hours;
		}
}else{
	// zo niet, moet de tijd 12 uur terug EN de dag 1 terug...
	$hours = abs($hours - 12);  // pak de ABSOLUTE waarde (dus niet -2:32 ofzo)
		if(strlen($hours) < 2){
			$hours = "0".$hours;
		}
	$day = $day -1;
		if($day < 1){
			//als de dag 0 is, moet er een maand terug
			$month = $month - 1;
switch($maand)
{
	case 2: $day = 28; //checken op schrikkeljaar ?
	break;
	case 4:
	case 6:
	case 9:
	case 11: $day = 30; 
	break; 
	default: $day = 31; 
	break; 
} 
				if($month < 1){
					// maand < 0, dus jaar terug
					$year = $year - 1;
					$month = 12;
				}
		}
}




$timeX = $hours.":".$minutes;
$dateX = $day."-".$month."-".$year;

de datum klopt wel, de tijd word nu i.p.v. 20:27, 03:27.... (de $r->ltime is "09:27") :confused:

EDIT: 12 minus 9 is natuurlijk 3.... maar het is op 24-uurs-basis. Iemand een oplossing?
 
Laatst bewerkt:
Okay, in feite heb ik de oplossing:
PHP:
$time = $r->ltime;
$date = $r->ldate;


$hours = substr($time, 0, 2); 
$minutes = substr($time, 3, 2);
$day = substr($date, 0, 2);
$month = substr($date, 3, 2);
$year = substr($date, 6, 4);

if($hours > 12){
	// stel de tijd is 13:00 uur, dan kan er gewoon 12 van af...
	$hours = $hours - 12;
		if(strlen($hours) < 2){
			$hours = "0".$hours;
		}
}else{
	// zo niet, moet de tijd 12 uur terug EN de dag 1 terug...
	$hours = abs($hours - 12);  // pak de ABSOLUTE waarde (dus niet -2:32 ofzo)
		if(strlen($hours) < 2){
			$hours = "0".$hours;
		}
	$day = $day -1;
		if($day < 1){
			//als de dag 0 is, moet er een maand terug
			$month = $month - 1;
switch($maand)
{
	case 2: $day = 28; //checken op schrikkeljaar ?
	break;
	case 4:
	case 6:
	case 9:
	case 11: $day = 30; 
	break; 
	default: $day = 31; 
	break; 
} 
				if($month < 1){
					// maand < 0, dus jaar terug
					$year = $year - 1;
					$month = 12;
				}
		}
}




$timeX = (23 - $hours).":".$minutes;
$dateX = $day."-".$month."-".$year;

(het is trouwens 11 uur verschil, niet 12 :D)

bedankt allemaal! :thumb:
 
Laatst bewerkt:
Heb er even tijd voor vrijgemaakt.

Wat is handiger? Jouw 39 regels of mijn 5 regels ;)
PHP:
function unixtodate($i_offset, $s_unixTimestamp, $s_format = "d-m-Y H:i:s") {
  $i_offset == 0 ? $s_timezone = $s_unixTimestamp : $s_timezone = strtotime($i_offset .'hours', $s_unixTimestamp);
  $s_convertedDate = date($s_format, $s_timezone);
  return $s_convertedDate;
}

Gebruik:
PHP:
<?php
function unixtodate($i_offset, $s_unixTimestamp, $s_format = "d-m-Y H:i:s") {
  $i_offset == 0 ? $s_timezone = $s_unixTimestamp : $s_timezone = strtotime($i_offset .'hours', $s_unixTimestamp);
  $s_convertedDate = date($s_format, $s_timezone);
  return $s_convertedDate;
}}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$verschil = -11;

//Huidige datum
echo
'Unix: '. mktime() .'<br />'.
'Converted: '. unixtodate($verschil, mktime()) .'<br />'.
'Offset: '. $verschil .'<br /><br />';

//Of een opgeslagen UNIX timestamp
$stamp = "1197672561"; // (14-12-2007 23:49)
echo
'Unix: '. $stamp .'<br />'.
'Converted: '. unixtodate($verschil, $stamp) .'<br />'.
'Offset: '. $verschil .'<br /><br />';

//Toch liever een andere notatie?
$notatie = "D h:i:s A";
echo
'Unix: '. mktime() .'<br />'.
'Converted: '. unixtodate($verschil, mktime(), $notatie) .'<br />'.
'Offset: '. $verschil .'<br /><br />';
?>
</body>
</html>

Have fun :)

edit: Als ik het goed begrijp is jouw "functie" van toepassing op de waardes uit de database, de functie hierboven zorgt er juist voor dat alles goed in de DB komt te staan.

Om je toch wat tegemoet te komen:

PHP:
function datetounixtodate($i_offset, $s_date, $s_time, $s_format = "d-m-Y H:i:s") {
  $s_datetime = $s_date .' '. $s_time;
  $s_unix = strtotime($s_datetime);
  return unixtodate($i_offset, $s_unix, $s_format);
}
LET WEL: GEBRUIK VAN VORIGE FUNCTIE IS VEREIST!

Gebruik:
PHP:
<?php
function unixtodate($i_offset, $s_unixTimestamp, $s_format = "d-m-Y H:i:s") {
  $i_offset == 0 ? $s_timezone = $s_unixTimestamp : $s_timezone = strtotime($i_offset .'hours', $s_unixTimestamp);
  $s_convertedDate = date($s_format, $s_timezone);
  return $s_convertedDate;
}
function datetounixtodate($i_offset, $s_date, $s_time, $s_format = "d-m-Y H:i:s") {
  $s_datetime = $s_date .' '. $s_time;
  $s_unix = strtotime($s_datetime);
  return unixtodate($i_offset, $s_unix, $s_format);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$datum = "01-11-2007";
$tijd = "10:32";

$verschil = -2;

echo datetounixtodate($verschil, $datum, $tijd);
?>
</body>
</html>
 
Laatst bewerkt:
Hopelijk begrijp je nu waarom het handiger is om de UNIX tijd in de database te drukken ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan