2012-05-08 2 views
0

Sur mon site, nous enregistrons tous les temps & date dans le format suivant:Changer le temps en timestrings en PHP

Tableau Colonne: Date - 16.01.2012 Tableau Colonne: Temps - 18:36:50

Cela a causé des problèmes avec ceux qui vivent dans des fuseaux horaires différents, donc nous cherchons à changer cela en simples chaînes de temps(), mais parce qu'il ya beaucoup de contenu sur notre site qui a déjà ce temps (anciennes, pas de temps()) dans la base de données, nous voulons conserver ces données et nous demandons donc comment nous pouvons changer ces chaînes en temps().

Je comprends comment mettre à jour des bases de données et tout, je suis en train de convertir 16.01.201206: 36: 50pm en sa chaîne time() respective, car strtotime aime que les choses soient parfaites.

Nous vous remercions de votre temps, et j'attends vos suggestions avec impatience.

+1

Pourquoi n'avez-vous pas utilisé le format datetime par défaut proposé par MySQL? Cela vous aurait sauvé tous ces problèmes. –

+0

@JohnConde Oui, il aurait, cependant, j'ai codé ce panneau il y a quelques années, et depuis juste élargi dessus et maintenant c'est la seule table qui utilise ce format de dates, il pose des problèmes à la fois backend et frontend et par conséquent, c'est quelque chose que je dois réparer. –

Répondre

2

Demandez-vous comment faire la conversion dans la base de données, ou comment convertir un datetime de la base de données quand il est chargé dans votre PHP?

Si c'est le dernier, il y a beaucoup de façons que vous pouvez formater votre date.

Extrait des commentaires du manuel PHP pour date_format:

<?php 

    $result = mysql_query("SELECT `datetime` FROM `table`"); 
    $row = mysql_fetch_row($result); 
    $date = date_create($row[0]); 

    echo date_format($date, 'Y-m-d H:i:s'); 
    #output: 2012-03-24 17:45:12 

    echo date_format($date, 'd/m/Y H:i:s'); 
    #output: 24/03/2012 17:45:12 

    echo date_format($date, 'd/m/y'); 
    #output: 24/03/12 

    echo date_format($date, 'g:i A'); 
    #output: 5:45 PM 

    echo date_format($date, 'G:ia'); 
    #output: 05:45pm 

    echo date_format($date, 'g:ia \o\n l jS F Y'); 
    #output: 5:45pm on Saturday 24th March 2012 

    ?> 

Ce ne sont que quelques exemples. Jetez un oeil à la page this pour plus d'idées.

Modifier basé sur le commentaire.

Vous pouvez utiliser DateTime::createFromFormat, qui vous permet de spécifier le format du datetime que vous passez dans

+0

Bien que utile, j'essaie de ne faire ni l'un ni l'autre. J'ai déjà le format de date dans ma base de données en tant que chaîne lisible par l'homme, mais j'ai besoin de savoir comment je peux changer cela en un timbre php time(). Cordialement, et désolé pour le dérangement. –

+2

Pas de soucis. Ma dernière mise à jour devrait vous permettre de prendre vos dates et heures et de les convertir à partir de n'importe quel format que vous spécifiez. –

+0

Bonjour, j'ai une idée approximative de la façon dont je peux le faire maintenant. Je sais que strtotime n'aime que les dates formatées américaines, donc je veux formater mes bases de données dans le format suivant: ** JJ-MM-AAAA HH: MM: SS ** puis les exécuter via strtotime, qui produira l'horodatage correct , correct? –

1

look pour mysql fonction appelée str_to_date

disons que vous aviez un champ de texte dbtable appelé date_str et son format est AAAAMMJJ. Vous pouvez utiliser la requête ff pour afficher un champ de date approprié.

SELECT str_to_date(date_str, '%Y%m%D') as date_fld FROM dbtable ... 

here's the link

0

Je sais qu'il est un peu en retard, mais je pense aussi cela devrait être fait par la base de données. Je pense que cela va supprimer quelques étapes supplémentaires, et peut-être être un peu plus rapide que de recourir aux fonctions de mise en forme de date de PHP. Vous pouvez écrire une instruction SQL qui ressemble à ceci:

"SELECT UNIX_TIMESTAMP(TIMESTAMP(STR_TO_DATE(Date, '%d.%m.%Y'), STR_TO_DATE(Time, '%r'))) AS epoch FROM Table" 

qui devrait renvoyer tout dans le format de l'heure appropriée() que vous recherchez.