2011-01-20 23 views

Respuesta

13

var now = new Date();

now.format ("dd/MM/aaaa hh: mm TT");

obtener todos los detalles aquí http://blog.stevenlevithan.com/archives/date-time-format

+0

Ya he probado este blog, y el tiempo se muestra como 20/50/2011 12:01 TT – nimi

+1

Los m están equivocados. Cambia la parte superior inferior, tienes el minuto donde debería estar el mes y viceversa. – Quibblesome

+0

No es correcto, mm es minutos y MM es meses – Zac

5
function pad_2(number) 
{ 
    return (number < 10 ? '0' : '') + number; 
} 

function hours(date) 
{ 
    var hours = date.getHours(); 
    if(hours > 12) 
     return hours - 12; // Substract 12 hours when 13:00 and more 
    return hours; 
} 

function am_pm(date) 
{ 
    if(date.getHours()==0 && date.getMinutes()==0 && date.getSeconds()==0) 
     return ''; // No AM for MidNight 
    if(date.getHours()==12 && date.getMinutes()==0 && date.getSeconds()==0) 
     return ''; // No PM for Noon 
    if(date.getHours()<12) 
     return ' AM'; 
    return ' PM'; 
} 

function date_format(date) 
{ 
    return pad_2(date.getDate()) + '/' + 
      pad_2(date.getMonth()+1) + '/' + 
      (date.getFullYear() + ' ').substring(2) + 
      pad_2(hours(date)) + ':' + 
      pad_2(date.getMinutes()) + 
      am_pm(date); 
} 

código corregido a partir del 3 '12 septiembre a las 10:11

+0

Verifica tu trabajo. Intenté esto y obtuve "03/06/112 05:02 PM" como salida. Lo único correcto es el tiempo. La fecha, el mes y (obviamente) el año son todos incorrectos. – Muhd

41

Si el formato es "fijo" que significa que no tiene que utilizar otro formato puede tener JavaScript puro en lugar de usar toda la biblioteca para formatear la fecha:

//Pad given value to the left with "0" 
 
function AddZero(num) { 
 
    return (num >= 0 && num < 10) ? "0" + num : num + ""; 
 
} 
 

 
window.onload = function() { 
 
    var now = new Date(); 
 
    var strDateTime = [[AddZero(now.getDate()), 
 
     AddZero(now.getMonth() + 1), 
 
     now.getFullYear()].join("/"), 
 
     [AddZero(now.getHours()), 
 
     AddZero(now.getMinutes())].join(":"), 
 
     now.getHours() >= 12 ? "PM" : "AM"].join(" "); 
 
    document.getElementById("Console").innerHTML = "Now: " + strDateTime; 
 
};
<div id="Console"></div>

La variable strDateTime sostendrá la fecha/hora en el formato que desee y usted debería ser capaz de ajustar muy fácilmente si es necesario.

Estoy usando join como una buena práctica, nada más, es mejor que agregar cadenas juntas.

+0

... y funciona en cromo –

+0

@Jens sí es lo más estándar posible, es difícil de creer que cualquier navegador tenga una sintaxis diferente para los métodos básicos de fecha/hora. :) –

+1

gran solución, también para formato de uso simplemente intercambie las instrucciones AddZero (now.getDate()) y AddZero (now.getMonth() + 1) y ajuste las horas, 12 si 0 y -12 si> 12 . Buena suerte y gracias por la solución – Gent

106

punto de vista semántico, es probable que en busca de la de una sola línea

new Date().toLocaleString() 

que formatea la fecha en la configuración regional del usuario.

Si realmente está buscando una forma específica de formatear las fechas, le recomiendo la biblioteca moment.js.

+3

Gracias por recomendar la biblioteca moment.js; es fantástico. – carbontwelve

+3

Nadie debería escribir su propio código de fecha/hora (como en algunas de las otras respuestas). El número de casos de esquina es asombroso. Ve a la página de prueba de la unidad para moment.js (http://momentjs.com/tests/) - ¡hay 66701 pruebas! Solo úsalo, es genial. O encuentra otra biblioteca, pero no escribas tu propio código para esto, es muy probable que te pierdas algo (he enredado esto en el pasado). – sidewinderguy

+1

No entiendo por qué fue tan difícil encontrar una respuesta de una línea como esta que funciona. Gracias. – timhc22

6

Puede convertir la fecha a casi cualquier formato usando el Snippet que he agregado a continuación.

Código:

dateFormat(new Date(),"dd/mm/yy h:MM TT") 
//"20/06/14 6:49 PM" 

Otros ejemplos

// Can also be used as a standalone function 
dateFormat(new Date(), "dddd, mmmm dS, yyyy, h:MM:ss TT"); 
// Saturday, June 9th, 2007, 5:46:21 PM 

dateFormat(new Date(),"dddd d mmmm yyyy") 
//Monday 2 June 2014" 

fragmentos:

Agregar siguiente código tomado de esta link en el código.

var dateFormat = function() { 
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, 
     timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, 
     timezoneClip = /[^-+\dA-Z]/g, 
     pad = function (val, len) { 
      val = String(val); 
      len = len || 2; 
      while (val.length < len) val = "0" + val; 
      return val; 
     }; 

    // Regexes and supporting functions are cached through closure 
    return function (date, mask, utc) { 
     var dF = dateFormat; 

     // You can't provide utc if you skip other args (use the "UTC:" mask prefix) 
     if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { 
      mask = date; 
      date = undefined; 
     } 

     // Passing date through Date applies Date.parse, if necessary 
     date = date ? new Date(date) : new Date; 
     if (isNaN(date)) throw SyntaxError("invalid date"); 

     mask = String(dF.masks[mask] || mask || dF.masks["default"]); 

     // Allow setting the utc argument via the mask 
     if (mask.slice(0, 4) == "UTC:") { 
      mask = mask.slice(4); 
      utc = true; 
     } 

     var _ = utc ? "getUTC" : "get", 
      d = date[_ + "Date"](), 
      D = date[_ + "Day"](), 
      m = date[_ + "Month"](), 
      y = date[_ + "FullYear"](), 
      H = date[_ + "Hours"](), 
      M = date[_ + "Minutes"](), 
      s = date[_ + "Seconds"](), 
      L = date[_ + "Milliseconds"](), 
      o = utc ? 0 : date.getTimezoneOffset(), 
      flags = { 
       d: d, 
       dd: pad(d), 
       ddd: dF.i18n.dayNames[D], 
       dddd: dF.i18n.dayNames[D + 7], 
       m: m + 1, 
       mm: pad(m + 1), 
       mmm: dF.i18n.monthNames[m], 
       mmmm: dF.i18n.monthNames[m + 12], 
       yy: String(y).slice(2), 
       yyyy: y, 
       h: H % 12 || 12, 
       hh: pad(H % 12 || 12), 
       H: H, 
       HH: pad(H), 
       M: M, 
       MM: pad(M), 
       s: s, 
       ss: pad(s), 
       l: pad(L, 3), 
       L: pad(L > 99 ? Math.round(L/10) : L), 
       t: H < 12 ? "a" : "p", 
       tt: H < 12 ? "am" : "pm", 
       T: H < 12 ? "A" : "P", 
       TT: H < 12 ? "AM" : "PM", 
       Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), 
       o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o)/60) * 100 + Math.abs(o) % 60, 4), 
       S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] 
      }; 

     return mask.replace(token, function ($0) { 
      return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); 
     }); 
    }; 
}(); 

// Some common format strings 
dateFormat.masks = { 
    "default":  "ddd mmm dd yyyy HH:MM:ss", 
    shortDate:  "m/d/yy", 
    mediumDate:  "mmm d, yyyy", 
    longDate:  "mmmm d, yyyy", 
    fullDate:  "dddd, mmmm d, yyyy", 
    shortTime:  "h:MM TT", 
    mediumTime:  "h:MM:ss TT", 
    longTime:  "h:MM:ss TT Z", 
    isoDate:  "yyyy-mm-dd", 
    isoTime:  "HH:MM:ss", 
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", 
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" 
}; 

// Internationalization strings 
dateFormat.i18n = { 
    dayNames: [ 
     "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", 
     "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 
    ], 
    monthNames: [ 
     "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 
     "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" 
    ] 
}; 

// For convenience... 
Date.prototype.format = function (mask, utc) { 
    return dateFormat(this, mask, utc); 
}; 
1

código de @Shadow Asistente debe devolver 14:45 en lugar de 14:45 PM. Así que he modificado su código un poco:

function getNowDateTimeStr(){ 
var now = new Date(); 
var hour = now.getHours() - (now.getHours() >= 12 ? 12 : 0); 
return [[AddZero(now.getDate()), AddZero(now.getMonth() + 1), now.getFullYear()].join("/"), [AddZero(hour), AddZero(now.getMinutes())].join(":"), now.getHours() >= 12 ? "PM" : "AM"].join(" "); 
} 

//Pad given value to the left with "0" 
function AddZero(num) { 
    return (num >= 0 && num < 10) ? "0" + num : num + ""; 
} 
+0

trabajando como un encanto. –

Cuestiones relacionadas