2011-05-06 22 views
50

Esto es lo que tengo que hacer.javascript date to string

Obtener fecha, convertir a cadena y pasarlo a una utilidad de terceros. La respuesta de la biblioteca tendrá fecha en formato de cadena cuando la aprobé. Por lo tanto, necesito convertir la fecha a cadena como 20110506105524 (AAAAMMDDHHMMSS)

function printDate() { 
    var temp = new Date(); 
    var dateStr = temp.getFullYear().toString() + 
        temp.getMonth().toString() + 
        temp.getDate().toString() + 
        temp.getHours().toString() + 
        temp.getMinutes().toString() + 
        temp.getSeconds().toString(); 

    debug (dateStr); 
} 

El problema con lo anterior es que para los meses 1-9, se imprime un dígito. ¿Cómo puedo cambiarlo para imprimir exactamente 2 dígitos para el mes, la fecha ...

+1

¿Has mirado en esta anterior: http://stackoverflow.com/questions/610406/javascript-printf-string-format – Liv

+1

Para referencia, aquí es una fuente definitiva: [Objeto de fecha de Javascript] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date) –

Respuesta

57

Va a necesitar para rellenar con "0" si es un solo dígito & nota getMonth devuelve 0..11 1..12 no

function printDate() { 
    var temp = new Date(); 
    var dateStr = padStr(temp.getFullYear()) + 
        padStr(1 + temp.getMonth()) + 
        padStr(temp.getDate()) + 
        padStr(temp.getHours()) + 
        padStr(temp.getMinutes()) + 
        padStr(temp.getSeconds()); 
    debug (dateStr); 
} 

function padStr(i) { 
    return (i < 10) ? "0" + i : "" + i; 
} 
38

Basándose en JQuery Datepicker, pero se podría hacer fácilmente:

var mydate = new Date(); 
$.datepicker.formatDate('yy-mm-dd', mydate); 
+2

¿Cómo obtener información de hora con datepicker? – Siddharth

+0

El [Complemento Timepicker] (http://trentrichardson.com/examples/timepicker/) parece hacer el truco. De lo contrario, creo que [jquery-timepicker] (http://jonthornton.github.com/jquery-timepicker/) se ve genial –

4

uso de este polyfill https://github.com/UziTech/js-date-format

var d = new Date("1/1/2014 10:00 am"); 
d.format("DDDD 'the' DS 'of' MMMM YYYY h:mm TT"); 
//output: Wednesday the 1st of January 2014 10:00 AM 
+0

este es un buen método, voy a intentar esto, gracias. – Deka

1

Un poco más simple usando regex y toJSON().

var now = new Date(); 
var timeRegex = /^.*T(\d{2}):(\d{2}):(\d{2}).*$/ 
var dateRegex = /^(\d{4})-(\d{2})-(\d{2})T.*$/ 
var dateData = dateRegex.exec(now.toJSON()); 
var timeData = timeRegex.exec(now.toJSON()); 
var myFormat = dateData[1]+dateData[2]+dateData[3]+timeData[1]+timeData[2]+timeData[3] 

que en el momento de la escritura le da "20151111180924".

Lo bueno de usar toJSON() es que todo viene ya relleno.

1

tal vez es más fácil de convertir la fecha en el número entero real 20110506105524 y luego convertir esto en una cadena:

function printDate() { 
    var temp = new Date(); 
    var dateInt = 
     ((((temp.getFullYear() * 100 + 
      temp.getMonth() + 1) * 100 + 
      temp.getDate()) * 100 + 
      temp.getHours()) * 100 + 
     temp.getMinutes()) * 100 + 
     temp.getSeconds(); 

    debug ('' + dateInt); // convert to String 
} 

Cuando temp.getFullYear() < 1000 el resultado será una (o más) dígitos más corto.

Precaución: esto no funcionará con una precisión de milisegundos (es decir, 17 dígitos) ya que Number.MAX_SAFE_INTEGER es 9007199254740991 que tiene solo 16 dígitos.

0

Me gusta la respuesta de Daniel Cerecedo usando toJSON() y regex. Una forma aún más simple sería:

var now = new Date(); 
var regex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*$/; 
var token_array = regex.exec(now.toJSON()); 
// [ "2017-10-31T02:24:45.868Z", "2017", "10", "31", "02", "24", "45" ] 
var myFormat = token_array.slice(1).join(''); 
// "20171031022445"