Oprettet søn. d. 07. marts 2010 kl. 12:48:01

nemlig
nemlig (4.676 point. Point ude: 75)

Omregn timestamp ved at fratrække et antal minutter

Jeg har et tidspunkt, som jeg har hentet fra MySQL.
Det står i dette format: 2010-03-07 23:52:00
Jeg ønsker så at fratrække et antal minutter, fx. 60 min. og få resultatet præsenteret uden skilletegn: 20100307225200
Jeg kunne anvende disse variabler:
$hentetTid = $row['starttid']; //Formatet er YYYY-MM-DD TT:MM.SS
$antalMin = 60;
$nyTid = $hentetTid - $antalMin; //Præsenteres uden skilletegn.

Skrevet søn. d. 07. marts 2010 kl. 13:01:53| #1

kimsey0
kimsey0 (23.194 point)
jacobbundgaard.dk
Prøv at se om strtotime og date ikke kan klare ærterne.

Skrevet søn. d. 07. marts 2010 kl. 13:20:38| #2

nemlig
nemlig (4.676 point)
Det er jeg ikke med på - desværre.
Jeg kan måske se, at jeg kan bruge substr og mktime til at finde et Unix timestamp for derefter at fratrække antal minutter.
Men hvordan jeg så kommer tilbage til alm. datoformat ved jeg ikke.
Derefter kan jeg vel bruge "date" til at formatere korrekt.

Skrevet søn. d. 07. marts 2010 kl. 13:27:05| #3

kimsey0
kimsey0 (23.194 point)
jacobbundgaard.dk
Du siger at du kan bruge substr og mktime til at lave et Unix timestamp. Du kommer tilbage til dit datoformat, som du selv siger, ved at bruge date til at formatere det korrekt:

$dato = date('Y-m-d H:i:s', $timestamp)

Skrevet søn. d. 07. marts 2010 kl. 13:33:00| #4

Christian_Belgien
Christian_Belgien (40.187 point)
Denne kode virkede paa mit system.  Jeg fik denne udskrift:


1268005920
1268002320
20100307225200

<?
$a = strtotime('2010-03-07 23:52:00');
echo $a . "<br/>";
$a = $a - 3600;
echo $a . "<br/>";
$b = date('YmdHis', $a);
echo $b . "<br/>";
?>

Skrevet søn. d. 07. marts 2010 kl. 13:37:39| #5

nemlig
nemlig (4.676 point)
OK, men kan du se, hvad jeg gør forkert i denne kode:
Jeg skal jo gerne ende på samme tidspunkt, da jeg først konverterer til Unix og derefter alm. format.
Men der er næste 1 år til forskel!

<?php

$dato1 = '2010-14-03 15:37:58';

$datoDag = substr($dato1,8,2);
$datoMd = substr($dato1,5,2);
$datoAar = substr($dato1,0,4);
$datoTT = substr($dato1,11,2);
$datoMM = substr($dato1,14,2);
$datoSS = substr($dato1,17,2);

$timestamp = mktime($datoTT,$datoMM,$datoSS,$datoMd,$datoDag,$datoAar);


echo $timestamp.'<br>';
echo $datoDag.'<br>';
echo $datoMd.'<br>';
echo $datoAar.'<br>';
echo $datoTT.'<br>';
echo $datoMM.'<br>';
echo $datoSS.'<br>';

echo date('YmdHis', $timestamp)
?>

Skrevet søn. d. 07. marts 2010 kl. 13:42:58| #6

Christian_Belgien
Christian_Belgien (40.187 point)
Jeg staar og skal afsted, jeg skal kikke om cirka to timer (hvis det saa stadig er aktuelt.)

Men jeg mener at min kode, startende med den vaerdi du opgav i det oprindelige spoergsmaal, giver det forventede slutresultat.  Er det korrekt?  Hvis saa, hvorfor foretraekker du saa den meget laengere kode?

Skrevet søn. d. 07. marts 2010 kl. 13:46:51| #7

nemlig
nemlig (4.676 point)
#6 Det er en fin kode, som virker, når datoen er indtastet direkte:

$a = strtotime('2010-03-07 23:52:00');

Hvorfor kan jeg ikke få det til at virke med:

$dato = '2010-03-07 23:52:00';
$a = strtotime($dato);

Skrevet søn. d. 07. marts 2010 kl. 13:49:51| #8

nemlig
nemlig (4.676 point)
Sorry - det er mig, som har angivet en helt forkert dato. Se første linje i min kode under #5.
Mig bekendt har vi ikke 14 måneder.

Så virker begge løsninger.
Tak for bidragene og send venligst et svar begge 2.

Skrevet søn. d. 07. marts 2010 kl. 13:50:00| #9

kimsey0
kimsey0 (23.194 point)
jacobbundgaard.dk
<?php

$dato1 = '2010-14-03 15:37:58';

$datoDag = substr($dato1,8,2);
$datoMd = substr($dato1,5,2);
$datoAar = substr($dato1,0,4);
$datoTT = substr($dato1,11,2);
$datoMM = substr($dato1,14,2);
$datoSS = substr($dato1,17,2);

$timestamp = mktime($datoTT,$datoMM,$datoSS,$datoMd,$datoDag,$datoAar);


echo $timestamp.'<br>';
echo $datoDag.'<br>';
echo $datoMd.'<br>';
echo $datoAar.'<br>';
echo $datoTT.'<br>';
echo $datoMM.'<br>';
echo $datoSS.'<br>';

echo date('YmdHis', $timestamp)
?>


Januar, februar, marts, april, maj, juni, juli, august, september, oktober, november, december...

Skrevet søn. d. 07. marts 2010 kl. 13:51:37| #10

kimsey0
kimsey0 (23.194 point)
jacobbundgaard.dk
Nåh, mens jeg skrev månederne ned kom i frem til svaret :)

Desuden, brug heller strtotime. Det er en meget mere effektiv løsning end alt the cut and paste.

Skrevet søn. d. 07. marts 2010 kl. 15:09:24| #11


Skrevet man. d. 08. marts 2010 kl. 02:40:49| #12

coderdk
coderdk (159.879 point)
I MySQL:

SELECT DATE_ADD(dato_felt,INTERVAL -60 MINUTE) AS NyTid FROM dintabel

- Så er den i $row['NyTid'] :)

Skrevet man. d. 08. marts 2010 kl. 08:37:39| #13

nemlig
nemlig (4.676 point)
Åhh ja - også en mulighed. Og det er vel den korteste kode, idet jeg blot skal have datoen formatteret med date().
Tak for bidraget.

Skrevet man. d. 08. marts 2010 kl. 09:22:33| #14

coderdk
coderdk (159.879 point)
Hvilket du også kan i SQL:

SELECT DATE_FORMAT(DATE_ADD(dato_felt,INTERVAL -60 MINUTE), '%e/%c-%Y %k:%i') AS NyTid FROM dintabel

:)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

php problem få en kode fra en anden side

Oprettet den 11. februar 2012 kl. 23.53
jesperkaae95 giver 30 point for svar | Giv et svar »

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger