He creado este script para calcular la fecha con 10 días de anticipación en el formato 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 a la izquierda en el componente de día y mes agregando estas reglas al script. Parece que no puedo hacer que funcione.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
y
if (MyDate.getDate <10)get.Date = '0' + getDate;
Si alguien pudiera mostrarme dónde insertarlos en el guión, estaría realmente agradecido.
javascript
date
date-format
time-format
leading-zero
Julian Coates
fuente
fuente
Respuestas:
Pruebe esto: http://jsfiddle.net/xA5B7/
EDITAR:
Para explicar,
.slice(-2)
nos da los dos últimos caracteres de la cadena.Así que no importa qué, podemos agregar
"0"
al día o mes, y solo pedir los dos últimos, ya que esos son siempre los dos que queremos.Entonces, si los
MyDate.getMonth()
retornos9
, serán:sumando
.slice(-2)
eso nos da los dos últimos caracteres que es:Pero si
MyDate.getMonth()
regresa10
, será:entonces agregar
.slice(-2)
nos da los dos últimos caracteres, o:fuente
MyDate.setDate(MyDate.getDate() + 20);
slice()
técnica en la respuesta aceptada es aproximadamente 1/10 de segundo más rápido que la técnica de @Alerosspad()
en 1 millón de iteraciones. jsFiddle . "paga tu dinero, elige".Aquí hay un ejemplo de los documentos de objetos Date en la red de desarrolladores de Mozilla usando una función personalizada "pad", sin tener que extender el prototipo de número de Javascript. La práctica función que dan como ejemplo es
Y a continuación se está utilizando en contexto.
fuente
pad
solo genera cadenas.La nueva forma moderna de hacerlo es usarlo
toLocaleDateString
, ya que no solo le permite formatear una fecha con la localización adecuada, sino que incluso puede pasar opciones de formato para archivar el resultado deseado:Cuando omita el primer argumento, detectará el idioma del navegador. Alternativamente, también puede usar
2-digit
la opción del año.Si no necesita admitir navegadores antiguos como IE10, esta es la forma más limpia de hacer el trabajo. IE10 y versiones inferiores no entenderán el argumento de las opciones.
Nota: Además, también existe
toLocaleTimeString
, si desea localizar o formatear la hora de una fecha.fuente
Puede definir una función "str_pad" (como en php):
fuente
Para ustedes, personas del futuro (ECMAScript 2017 y más allá)
Solución
Explicación
el
String.prototype.padStart(targetLength[, padString])
agrega tantos como sea posiblepadString
en elString.prototype
objetivo para que la nueva longitud del objetivo seatargetLength
.Ejemplo
fuente
.padStart(2, '0')
ya que el segundo parámetro es una cadena, aunque probablemente no importará a menos que esté usando TypeScript//en uso:
fuente
Encontré la forma más corta de hacer esto:
agregará ceros iniciales a todos los dígitos solitarios y únicos
fuente
fuente
Puede usar el operador ternario para formatear la fecha como una declaración "if".
Por ejemplo:
Entonces
sería similar a una instrucción if, donde if getDate () devuelve un valor menor que 10, luego devuelve un '0' + la Fecha, o si no, la fecha si es mayor que 10 (ya que no necesitamos agregar el valor inicial 0). Lo mismo para el mes.
Editar: Olvidé que getMonth comienza con 0, así que agregué 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.
fuente
Hay otro enfoque para resolver este problema, utilizando
slice
JavaScript.la
datestring
fecha de regreso con el formato que espera: 2019-09-01Otro enfoque es utilizar la
dateformat
biblioteca: https://github.com/felixge/node-dateformatfuente
Haz tu vida más fácil y usa Moment.js algún código de muestra:
fuente
fuente
Puede proporcionar opciones como parámetro para formatear la fecha. El primer parámetro es para la configuración regional que podría no necesitar y el segundo es para las opciones. Para obtener más información, visite https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
fuente
Envolví la respuesta correcta de esta pregunta en una función que puede agregar varios ceros a la izquierda, pero por defecto agrega 1 cero.
para trabajar solo con números y no más de 2 dígitos, este también es un enfoque:
fuente
Otra opción, usar una función incorporada para hacer el relleno (¡pero resulta en un código bastante largo!):
Y otro, manipulando cadenas con expresiones regulares:
Pero tenga en cuenta que uno mostrará el año al comienzo y el día al final .
fuente
Agregando a la respuesta @modiX, esto es lo que funciona ... NO DEJE ESO como vacío
fuente
Aquí hay un ejemplo muy simple de cómo puede manejar esta situación.
fuente
El siguiente objetivo es extraer la configuración, conectar
Date.protoype
y aplicar la configuración.He usado un
Array
para almacenar fragmentos de tiempo y cuando yopush()
this
comoDate
objeto, me devuelve la longitud para iterar. Cuando termine, puedo usarjoin
elreturn
valor.Esto parece funcionar bastante rápido: 0.016ms
demostración: http://jsfiddle.net/tive/U4MZ3/
fuente
Lo que haría es crear mi propio asistente de fecha personalizado que se vea así:
(ver también este violín )
fuente
Agregue un poco de relleno para permitir un cero inicial, donde sea necesario, y concatene utilizando su delimitador de elección como cadena.
fuente
Como sugiere @John Henckel, comenzar a usar el método toISOString () facilita las cosas
fuente
fuente
intente esto para una función básica, no se requieren bibliotecas
fuente
fuente
Puede usar String.slice () que extrae una sección de una cadena y la devuelve como una nueva cadena, sin modificar la cadena original:
O también puede usar una biblioteca como Moment.js para formatear la fecha:
fuente