quitar padstart padleft izquierda ceros javascript date date-format time-format leading-zero

padleft - padstart javascript



Javascript agregar ceros iniciales hasta la fecha (16)

Para ustedes, gente del futuro (ECMAScript 2017 y más allá)

Solución

"use strict" const today = new Date() const year = today.getFullYear() const month = `${today.getMonth() + 1}`.padStart(2, 0) const day = `${today.getDate()}`.padStart(2, 0) const stringDate = [day, month, year].join("/") // 13/12/2017

Explicacion

String.prototype.padStart(targetLength[, padString]) agrega la mayor cantidad posible de padString en el objetivo String.prototype para que la nueva longitud del objetivo sea targetLength .

Ejemplo

"use strict" let month = "9" month = month.padStart(2, 0) // "09" let byte = "00000100" byte = byte.padStart(8, 0) // "00000100"

He creado este script para calcular la fecha con 10 días de antelación en el formato de dd / mm / aaaa:

var MyDate = new Date(); var MyDateString = new Date(); MyDate.setDate(MyDate.getDate()+10); MyDateString = MyDate.getDate() + ''/'' + (MyDate.getMonth()+1) + ''/'' + MyDate.getFullYear();

Necesito que la fecha aparezca con ceros iniciales en el componente día y mes agregando estas reglas al script. Parece que no puedo hacerlo funcionar.

if (MyDate.getMonth < 10)getMonth = ''0'' + getMonth;

y

if (MyDate.getDate <10)get.Date = ''0'' + getDate;

Si alguien me pudiera mostrar dónde insertar estos en el guión, estaría muy agradecido.


Agregue un poco de relleno para permitir un cero inicial, donde sea necesario, y concatene utilizando el delimitador de su elección como cadena.

Number.prototype.padLeft = function(base,chr){ var len = (String(base || 10).length - String(this).length)+1; return len > 0? new Array(len).join(chr || ''0'')+this : this; } var d = new Date(my_date); var dformatted = [(d.getMonth()+1).padLeft(), d.getDate().padLeft(), d.getFullYear()].join(''/'');


El siguiente objetivo es extraer la configuración, Date.protoype con Date.protoype y aplicar la configuración.

He usado un Array para almacenar fragmentos de tiempo y cuando push() this como un objeto Date , me devuelve la longitud para iterar. Cuando termine, puedo usar join en el valor de return .

Esto parece funcionar bastante rápido: 0.016ms

// Date protoype Date.prototype.formatTime = function (options) { var i = 0, time = [], len = time.push(this.getHours(), this.getMinutes(), this.getSeconds()); for (; i < len; i += 1) { var tick = time[i]; time[i] = tick < 10 ? options.pad + tick : tick; } return time.join(options.separator); }; // Setup output var cfg = { fieldClock: "#fieldClock", options: { pad: "0", separator: ":", tick: 1000 } }; // Define functionality function startTime() { var clock = $(cfg.fieldClock), now = new Date().formatTime(cfg.options); clock.val(now); setTimeout(startTime, cfg.options.tick); } // Run once startTime();

demostración: http://jsfiddle.net/tive/U4MZ3/


Encontré la manera más corta de hacer esto:

MyDateString.replace(/(^|/D)(/d)(?!/d)/g, ''$10$2'');

agregará ceros iniciales a todos los dígitos solitarios y solitarios


Envolví la respuesta correcta de esta pregunta en una función que puede agregar varios cero iniciales, pero por defecto agrega 1 cero.

function zeroFill(nr, depth){ depth = (depth === undefined)? 1 : depth; var zero = "0"; for (var i = 0; i < depth; ++i) { zero += "0"; } return (zero + nr).slice(-(depth + 1)); }

para trabajar solo con números y no más de 2 dígitos, este es también un enfoque:

function zeroFill(i) { return (i < 10 ? ''0'' : '''') + i }


Este es un ejemplo de la documentación del objeto Fecha en la Red de Desarrolladores de Mozilla usando una función de "almohadilla" personalizada, sin tener que extender el prototipo Número de Javascript. La función práctica que dan como ejemplo es

function pad(n){return n<10 ? ''0''+n : n}

Y abajo está siendo usado en contexto.

/* use a function for the exact format desired... */ function ISODateString(d){ function pad(n){return n<10 ? ''0''+n : n} return d.getUTCFullYear()+''-'' + pad(d.getUTCMonth()+1)+''-'' + pad(d.getUTCDate())+''T'' + pad(d.getUTCHours())+'':'' + pad(d.getUTCMinutes())+'':'' + pad(d.getUTCSeconds())+''Z'' } var d = new Date(); console.log(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z


Haz tu vida más fácil y usa Moment.js algún código de ejemplo:

var beginDateTime = moment() .format(''DD-MM-YYYY HH:mm'') .toString(); // Now will print 30-06-2015 17:55 console.log(beginDateTime);


Lo que haría es crear mi propio asistente de fecha personalizado que se vea así:

var DateHelper = { addDays : function(aDate, numberOfDays) { aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays return aDate; // Return the date }, format : function format(date) { return [ ("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes ("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes date.getFullYear() // Get full year ].join(''/''); // Glue the pieces together } } // With this helper, you can now just use one line of readable code to : // --------------------------------------------------------------------- // 1. Get the current date // 2. Add 20 days // 3. Format it // 4. Output it // --------------------------------------------------------------------- document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

(ver también este violín )


Otra opción, usando una función incorporada para hacer el relleno (¡pero resultando en un código bastante largo!):

myDateString = myDate.getDate().toLocaleString(''en-US'', {minimumIntegerDigits: 2}) + ''/'' + (myDate.getMonth()+1).toLocaleString(''en-US'', {minimumIntegerDigits: 2}) + ''/'' + myDate.getFullYear(); // ''12/06/2017''

Y otra, manipulando cuerdas con expresiones regulares:

var myDateString = myDate.toISOString().replace(/T.*/, '''').replace(/-/g, ''/''); // ''2017/06/12''

Pero tenga en cuenta que uno mostrará el año al comienzo y el día al final .


Podría usar el operador ternario para formatear la fecha como una declaración "if".

Por ejemplo:

var MyDate = new Date(); MyDate.setDate(MyDate.getDate()+10); var MyDateString = (MyDate.getDate() < 10 ? ''0'' + MyDate.getDate() : MyDate.getDate()) + ''/'' + ((d.getMonth()+1) < 10 ? ''0'' + (d.getMonth()+1) : (d.getMonth()+1)) + ''/'' + MyDate.getFullYear();

Asi que

(MyDate.getDate() < 10 ? ''0'' + MyDate.getDate() : MyDate.getDate())

sería similar a una instrucción if, donde si getDate () devuelve un valor menor que 10, luego devuelve un ''0'' + la Fecha, o si no devuelve la fecha si es mayor que 10 (ya que no necesitamos agregar el encabezado). 0). Lo mismo para el mes.

Editar: Olvidé que getMonth comienza con 0, así que agregue el +1 para tenerlo en cuenta. Por supuesto, también podría decir d.getMonth () <9:, pero pensé que usar el +1 ayudaría a que sea más fácil de entender.


Prueba esto: http://jsfiddle.net/xA5B7/

var MyDate = new Date(); var MyDateString; MyDate.setDate(MyDate.getDate() + 20); MyDateString = (''0'' + MyDate.getDate()).slice(-2) + ''/'' + (''0'' + (MyDate.getMonth()+1)).slice(-2) + ''/'' + MyDate.getFullYear();

EDITAR:

Para explicar, .slice(-2) nos da los dos últimos caracteres de la cadena.

No importa qué, podemos agregar "0" al día o al mes, y solo pedir los dos últimos, ya que son los dos que queremos.

Entonces, si MyDate.getMonth() devuelve 9 , será:

("0" + "9") // Giving us "09"

así que agregar .slice(-2) en eso nos da los últimos dos caracteres, que es:

("0" + "9").slice(-2) "09"

Pero si MyDate.getMonth() devuelve 10 , será:

("0" + "10") // Giving us "010"

por lo que agregar .slice(-2) nos da los dos últimos caracteres, o:

("0" + "10").slice(-2) "10"


Puede definir una función "str_pad" (como en php):

function str_pad(n) { return String("00" + n).slice(-2); }


Si desea localizar la salida de la fecha por idioma y necesita ceros iniciales, la solución tiene un aspecto diferente:

var date = new Date(2018, 2, 1); var result = date.toLocaleDateString("de-DE", { year: "numeric", month: "2-digit", day: "2-digit", }); console.log(result);

Además, puede usar 2-digit en la opción de año, también.

Siempre que conozca la ubicación y desee mostrar la fecha en una forma legible, considero que esta es la forma más limpia de hacer el trabajo.

Desafortunadamente, IE10 y las versiones inferiores no admiten los parámetros toLocaleDateString .


Number.prototype.padZero= function(len){ var s= String(this), c= ''0''; len= len || 2; while(s.length < len) s= c + s; return s; }

//en uso:

(function(){ var myDate= new Date(), myDateString; myDate.setDate(myDate.getDate()+10); myDateString= [myDate.getDate().padZero(), (myDate.getMonth()+1).padZero(), myDate.getFullYear()].join(''/''); alert(myDateString); })() /* value: (String) 09/09/2010 */


function formatDate(jsDate){ // add leading zeroes to jsDate when days or months are < 10.. // i.e. // formatDate(new Date("1/3/2013")); // returns // "01/03/2103" //////////////////// return (jsDate.getDate()<10?("0"+jsDate.getDate()):jsDate.getDate()) + "/" + ((jsDate.getMonth()+1)<10?("0"+(jsDate.getMonth()+1)):(jsDate.getMonth()+1)) + "/" + jsDate.getFullYear(); }


var MyDate = new Date(); var MyDateString = ''''; MyDate.setDate(MyDate.getDate()); var tempoMonth = (MyDate.getMonth()+1); var tempoDate = (MyDate.getDate()); if (tempoMonth < 10) tempoMonth = ''0'' + tempoMonth; if (tempoDate < 10) tempoDate = ''0'' + tempoDate; MyDateString = tempoDate + ''/'' + tempoMonth + ''/'' + MyDate.getFullYear();