2010-07-20 13 views
14

Mam kalendarz jquery, który ustawia wartość wejściową na MM/DD/RRRRJak przekonwertować MM/DD/RRRR do YYYY-MM-DD?

Jak mogę przekonwertować to tak, aby moja kolumna bazy danych (data) mogła go poprawnie zaakceptować?

EDIT

Gordon miał rację - jego związek wskazał mi tej odpowiedzi

$mysql_date = date('Y-m-d H:i:s', strtotime($user_date)); 
+14

Czy naprawdę nie [odpowiedź] (http://stackoverflow.com/search?q=How+to+convert+MM%2FDD%2FYYYY+to+YYYY -MM-DD% 3F + php), który by ci to dał? – Gordon

+3

Jestem prawie pewien, że większość wtyczek jQuery można skonfigurować, nawet ich format daty. – Piskvor

+0

Inną opcją jest pozostawienie tak, jak jest i pozwolić DB wykonać konwersję –

Odpowiedz

33
$date = "07/12/2010"; 
$your_date = date("Y-m-d", strtotime($date)); 

Mam nadzieję, że moja odpowiedź jest przydatna :)

+14

Ważne jest, aby zauważyć inną interpretację '-' i'/'w dacie. Jeśli użyjesz '-' php określi to jako DD-MM, jeśli użyjesz'/'php określi to jako MM-DD. – Devon

+0

Dzięki @Devon za podanie przydatnych informacji. –

+0

Po prostu komentarz na komentarz @Devon, nie wiedziałem, że PHP działało w ten sposób i, moim zdaniem, jest to naprawdę zły sposób działania, ponieważ doprowadzi to do błędów, ponieważ istnieją miejsca (takie jak Brazylia), gdzie data format jest "DD/MM/RRRR", a ponieważ '/' jest używany PHP określi ** błędnie ** to będzie "MM-DD". –

10

chcesz to zrobić w PHP, prawda?

  1. Zastosowanie Explode

    $christmas = "12/25/2010"; 
    $parts = explode('/',$christmas); 
    $yyyy_mm_dd = $parts[2] . '-' . $parts[0] . '-' . $parts[1] 
    
  2. Korzystając strptime do analizowania go do datownika, a następnie strftime sformatować go tak, jak chcesz.

2

Potrzebujemy więcej informacji?

1) Jaki skrypt wstawia do bazy danych? Zakładam PHP

2) Musimy również wiedzieć, w jaki sposób przechowujesz datę iw jakim formacie?

Moje rozwiązanie byłoby:

$dates = preg_split('/\//',$_POST['date']); 

$month = $dates[0]; 
$day = $dates[1]; 
$year = $dates[2]; 

$finalDate = $year.'-'.$month.'-'.$day; 
1

będę sugerować użycie strtotime() funkcję, a następnie date(). Dzięki temu możesz przekonwertować dowolny format daty.

$unix_time_stamp = strtotime($mm_dd_yyyy); 
$yyyy_mm_dd = date(Y/m/d,$unix_timestamp); 
+0

Napraw błędy składni, proszę. – Gordon

1

Alternatywnie można to zrobić bez użycia explode:

$date = "12/25/2010"; 
$mysql_date = date('Y-m-d', strtotime($date)); 

Można teraz używać $mysql_date wstawić do bazy danych.

0

jeśli chcesz tylko jedna linia spróbuj tego:

$time = "07/12/2010"; 

$new_time = preg_replace("!([01][0-9])/([0-9]{2})/([0-9]{4})!", "$3-$1-$2", $time); 

var_dump($time); 
var_dump($new_time); 
-1

Spróbuj następującego kodu:

$date = "01-14-2010"; 
echo $your_date = date("Y-m-d", strtotime($date)); 

To będzie echo 1969-12-31.

0

przypisać wartości Data do zmiennej $d

$dob oznacza datę, które chcesz przekonwertować

$d= date('Y-m-d',strtotime ($dob)); 
1

Spróbuj tego:

$date = explode('/', '16/06/2015'); 

$new = date('Y-m-d H:i:s', strtotime(implode('-', array_reverse($date)))); 

Returns: 2015-06-15 00: 00:00

Mam nadzieję, że to pomoże!

3

Wypróbuj poniższy kod,

<?php 
$date = "10/24/2014"; 
$date = DateTime::createFromFormat("m/d/Y" , $date); 
echo $date->format('Y-m-d'); 
?> 
+0

Podobała mi się ta odpowiedź, ponieważ jest bardziej elastyczna, ponieważ PHP niczego nie zgaduje, przekazujesz formaty daty od (m/d/Y) do (Y-m-d). –

Powiązane problemy