2010-05-19 11 views
5

Mam ciąg daty/czasu podobny do następującego: 180510_112440 w tym formacie ddmmyy_hhmmss Potrzebuję fragmentu kodu zawierającego ciąg sformatowany w następujący sposób: 2010-05-18 11:24:40 Dzięki za Wsparcie.Zmień datę w PHP

+0

czy zakładasz, że WSZYSTKIE twoje lata to 20XX? To będzie potencjalny problem. – Drew

+1

Chciałbym, żeby była strona, gdzie mogę zamieścić coś w stylu "Mam używany samochód i potrzebuję nowego". A co z nauką bardzo prostego PHP? –

Odpowiedz

2

inna możliwa odpowiedź jest powszechne stosowanie strptime do analizowania datę i funkcję mktime:

<?php 

$orig_date = "180510_112440"; 

// Parse our date in order to retrieve in an array date's day, month, etc. 
$parsed_date = strptime($orig_date, "%d%m%y_%H%M%S"); 

// Make a unix timestamp of this parsed date: 
$nice_date = mktime($parsed_date['tm_hour'], 
        $parsed_date['tm_min'], 
        $parsed_date['tm_sec'], 
        $parsed_date['tm_mon'] + 1, 
        $parsed_date['tm_mday'], 
        $parsed_date['tm_year'] + 1900); 

// Verify the conversion: 
echo $orig_date . "\n"; 
echo date('d/m/y H:i:s', $nice_date); 
+0

to znacznie lepiej! – Kreker

+0

Uwaga: Ta funkcja nie jest zaimplementowana na platformach Windows. – Kreker

1
$inDate = '180510_112440'; 
$date = strtotime('20'.substr($inDate,4,2).'-'. 
     substr($inDate,2,2).'-'. 
     substr($inDate,0,2).' '. 
     substr($inDate,7,2).':'. 
     substr($inDate,9,2).':'. 
     substr($inDate,11,2)); 

echo date('d-M-Y H:i:s',$date); 

Zakłada data będzie zawsze dokładnie w tym samym formacie, i zawsze 21st Century

1
list($d,$m,$y,$h,$i,$s)=sscanf("180510_112440","%2c%2c%2c_%2c%2c%2c"); 
echo "20$y-$m-$d $h:$i:$s"; 
Powiązane problemy