2010-10-29 27 views
64

En PHP, puede convertir fácilmente una descripción de fecha y hora en inglés en una fecha apropiada con strtotime().equivalente de Javascript del strtotime de php()?

¿Hay algo similar en Javascript?

+0

Para el análisis del formato dd.mm.aaaa, comprobar http://stackoverflow.com/questions/1576753/parse-datetime-string-in-javascript –

Respuesta

41

Encontré this article y probé el tutorial. Básicamente, se puede utilizar el constructor fecha para analizar una fecha, a continuación, escribir obtener los segundos desde el getTime() método

var d=new Date("October 13, 1975 11:13:00"); 
document.write(d.getTime() + " milliseconds since 1970/01/01"); 

hace este trabajo?

+0

Parece que yo no funciona, la fecha está formateada en formato dmY. –

+22

-1. Esto solo cubre las fechas formateadas RFC 822 o ISO 8601, pero 'strtotime()' admite muchos otros formatos. –

+1

Esto puede satisfacer el caso de uso del OP, pero es una respuesta inválida técnicamente incorrecta a la pregunta. Ver (y, por favor, voto favorable) la respuesta de Westy92. –

53

Sí, lo es. Y es compatible con todos los principales navegador:

var ts = Date.parse("date string"); 

La única diferencia es que esta función devuelve milisegundos en lugar de segundos, por lo que necesita para dividir el resultado por 1000.

Check what valid formats can JavaScript parse.

+1

Esta debería ser la respuesta aceptada. +1 – Doorknob

+18

No; esto funciona muy diferente de php strtotime, ninguno de los ejemplos de la documentación de php funciona, ni uno solo 'strtotime (" now "); strtotime ("10 de septiembre de 2000"); strtotime ("+ 1 día"); strtotime ("+ 1 semana"); strtotime ("+ 1 semana 2 días 4 horas 2 segundos"); strtotime ("el próximo jueves"); strtotime ("el último lunes"); ' –

+0

Gracias @Arnaldo. Esto es trabajo para mí. Su respuesta es más aceptable que "Djechelon" – Adi

21

Salida this implementación de strtotime de PHP() en JavaScript!

Descubrí que funciona de manera idéntica a PHP para todo lo que le arrojé.

Actualización: esta función de acuerdo con la versión 1.0.2 no puede manejar este caso: '2007:07:20 20:52:45' (Nota del separador : por año y mes)

Actualización 2018:

Este es ahora disponible como un módulo npm! Simplemente npm install locutus y luego en su fuente:

var strtotime = require('locutus/php/datetime/strtotime'); 
+1

Normalmente, no me gustan las respuestas que son solo enlaces a bibliotecas, pero en este caso dado que JavaScript no maneja casi casos locos como strtotime, esta es una respuesta fantástica. ¡Gracias! – user819644

4

I celoso del strtotime() en php, pero lo hago mío en javascript usando momento. No es tan dulce como el de php, pero también lo es el truco.

// first day of the month 
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate(); 

ir y venir con el subtract() y add() con el endOf() y startOf():

// last day of previous month 
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate(); 
-2

Compatibilidad con navegadores para analizar cadenas is inconsistent. Debido a que no hay especificaciones sobre qué formatos deben admitirse, lo que funciona en algunos navegadores no funcionará en otros navegadores.

Trate Moment.js - proporciona la funcionalidad multi-navegador para parsing dates:

var timestamp = moment("2013-02-08 09:30:26.123"); 
console.log(timestamp.milliseconds()); // return timestamp in milliseconds 
console.log(timestamp.second()); // return timestamp in seconds 
+0

Esto no responde completamente la pregunta (y tiene un puntaje negativo). ¿Hay alguna manera de revocar la recompensa? – Westy92

0

Hay pocos módulos que proporciona un comportamiento similar, pero no exactamente como strtotime de PHP. Entre las pocas alternativas que encontré date-util se obtienen los mejores resultados.

-1

var strdate = new Date('Tue Feb 07 2017 12:51:48 GMT+0200 (Türkiye Standart Saati)'); 
 
var date = moment(strdate).format('DD.MM.YYYY'); 
 
$("#result").text(date); //07.02.2017
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script> 
 

 
<div id="result"></div>

+0

* Advertencia de desuso: el valor proporcionado no está en un formato ISO reconocido. La construcción del momento vuelve a js 'Date()' * - tan ... lo mismo que 'new Date (strdate)' realmente ... – deceze

Cuestiones relacionadas