web-dev-qa-db-fra.com

Envoyer PHP date au format de date JavaScript

Je veux transmettre mon PHP heure du serveur à mon fichier JavaScript.

Code PHP:

date_default_timezone_set('Australia/Perth');
 echo date("r");

JavaScript:

$.get('time.php', function(data) {
  today = new Date(data);
  closing = new Date(data);
});

Le code PHP renvoie Sun, 18 Mar 2012 12:01:23 +0800, heure correcte pour Australie/Perth. Mais cela renvoie un objet de date JavaScript non valide.

Lorsque j'essaie de le convertir en horodatage comme:

 echo strtotime(date("r"));

J'obtiens la date JavaScript Dim 18 mars 2012 04:03:14 GMT + 0000 (WET) (c'est la valeur d'aujourd'hui js var)

Si j'utilise:

echo gmstrftime('%s');

J'obtiens: Sat Mar 17 2012 20:04:30 GMT + 0000 (WET).

Est-ce que quelqu'un peut m'aider s'il vous plait?

26
jribeiro

Le PHP dans nallar n'est pas exactement comme JavaScript, cela imitera exactement JavaScript:

echo date('D M d Y H:i:s O');
54
simontemplar
$.get('time.php', function(data) {
  today = new Date(data);
  closing = new Date(data);
});

Quel était le but de multiplier la chaîne par 1000? Cette opération n'a pas de sens.

modifier:

Cela PHP fonctionnera pour cela.

echo date('D, d M y H:i:s')." +0000";
10
Luna
date('D M d Y H:i:s O') 

Ne fonctionnera pas si votre langue actuelle n'est pas l'anglais.

Une meilleure alternative consiste à utiliser

new Date(<? echo date("Y, n - 1, d, H, i, s") ?>)
6
user963714

Vous pouvez également laisser le PHP tel quel et analyser la date en utilisant JavaScript.

var date = new Date(Date.parse(DATE));

Alors même des choses comme ça fonctionneraient:

new Date(Date.parse('11 March 2017'));

Quelles sorties via un journal de console (GMT + 1000 est parce que je suis en Australie):

Sat Mar 11 2017 00:00:00 GMT+1000

Plus d'informations ici: https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

4
Rob

Voici un exemple avec l'objet DateTime

Code PHP (fonctionne sur> PHP 5.3)

$serverDate = new \DateTime('NOW');
// if you want to set different time zone
// $serverDate = new \DateTime('NOW', new \DateTimeZone('Australia/Perth'));
echo $serverDate->format(DATE_ATOM);

Code JS

$.get('time.php', function(data) {
  var serverDate = new Date(data);
});
2
georgiar

Un bon moyen est l'horodatage

    echo $data = time()*1000;
    echo '
      <div id="setxDatetime">CURRENT SERVER TIME IS: </div>
      <script type="text/javascript">
        var x = document.getElementById("setxDatetime");
        x.innerHTML = x.innerHTML + new Date(' . $data . ');
      </script>
    ';

1381324693000

L'HEURE ACTUELLE DU SERVEUR EST: Wed Oct 09 2013 16:18:13 GMT + 0300 (GTB Standard Time)

1
Petre Sosa

Il pourrait y avoir de meilleures solutions, mais celle-ci a fait l'affaire pour moi. Le problème clé est que javascript utilise les mois 0-11 tandis que php utilise 1-12 comme mentionné précédemment.

function convert_date_php_js($date){
$converted_date = date("Y", strtotime($date)) . ', ' . (date("n", strtotime($date))-1) . ', ' . date("j", strtotime($date));
return $converted_date;}
$priceDate = "2016-09-14";
$d = convert_date_php_js($priceDate);
//returns 2016, 8, 14
0
Chad