establecer la fecha en el tipo de entrada fecha


104
<input id="datePicker" type="date" />​

Estableceré la fecha de hoy en el tipo de entrada datepicker fecha en Chrome.

$(document).ready( function() {
    var now = new Date();
    var today = now.getDate()  + '/' + (now.getMonth() + 1) + '/' + now.getFullYear();
    alert(today);
    $('#datePicker').val(today);
});​

pero no esta funcionando

Edite este jsFiddle : inténtelo en Chrome.


2
Si elige una fecha en su violín e inspecciona el marco de resultados, hace un $('#datePicker').val();da "2012-09-10"y ese no es el formato que usa para establecer la fecha

Funciona en cromo por mi parte. ¿Qué quieres decir exactamente con its not working?
AdityaParab

intente:, { currentText: "Now" }vea el manual
diEcho

trabajando en mí ... ¿cuál es el problema?
Netorica

1
@JigarPandya fr_FR (@ user108, ​​vea también stackoverflow.com/a/3496622/180100 )

Respuestas:


159

Enlace de violín: http://jsfiddle.net/7LXPq/93/

Dos problemas en esto:

  1. El control de fecha en HTML 5 acepta en el formato de año - mes - día como usamos en SQL
  2. Si el mes es 9, debe configurarse como 09, no simplemente como 9. Por lo que también se aplica al campo de día.

Siga el enlace de violín para ver la demostración:

var now = new Date();

var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);

var today = now.getFullYear()+"-"+(month)+"-"+(day) ;

$('#datePicker').val(today);

4
Respuesta posterior a 2012: compruebe mi respuesta para obtener una solución compatible en una línea de código.
Oliv Utilo

@ OlivUtilo — seguro, pero su respuesta arrojará resultados incorrectos algunas veces.
RobG

Me ahorraste tiempo amigo, muchas gracias
Dip Surani

128

document.getElementById("datePicker").valueAsDate = new Date()

Deberia trabajar.


6
Esta es la mejor solución que he encontrado hasta ahora - funciona en Android 4.0.3
Ben Clayton

6
Definitivamente parece más limpio que la respuesta aceptada ... gracias
Skipjack

1
Descubrí que esto no funciona en Safari por alguna razón :(
james_alvarez

Probado en Chrome y Edge y funcionó bien. Como dijo @Skipjack, ¡es una respuesta increíble!
Arun

Parece la solución correcta, sin embargo, en Safari (13.1.2) la llamada le da una excepción de estado no válido. ¿No estás seguro de por qué ...?
fbitterlich

23

Actualización: estoy haciendo esto con date.toISOString().substr(0, 10). Da el mismo resultado que la respuesta aceptada y tiene un buen soporte.


2
Trabajos en safari
james_alvarez

4
Nota: esto da una fecha en la zona horaria UTC. En contraste, la respuesta principal usa la hora local.
Qwertie

@Qwertie: ambos operan en el mismo Dateobjeto (creado con una nueva fecha o fecha actual, que hereda la zona horaria del navegador). el uso de toISOString o las funciones getDate resolverá (creo) lo mismo; así que creo que esto debería tener el comportamiento deseado ...
Oliv Utilo

1
@ OlivUtilo: no, no lo hacen durante el período de compensación de zona horaria del host.
RobG

Como dice Qwertie, esto potencialmente da una respuesta incorrecta si está usando una fecha sin una hora. Por ejemplo, el sábado 1 de septiembre de 2018 a las 00:00:00 GMT + 0100 se convierte a "2018-08-31"
havlock

14
var today = new Date().toISOString().split('T')[0];
$("#datePicker").val(today);

El código anterior funcionará.


12

para mí, la forma más corta de resolver este problema es usar moment.js y resolver este problema en solo 2 líneas.

var today = moment().format('YYYY-MM-DD');
$('#datePicker').val(today);

1
sí, como $ ('# datePicker'). val (momento (). formato ('AAAA-MM-DD'));
Umair Khalid

2
Para las personas que no están familiarizadas con Moment, si desea formatear un objeto de fecha de JavaScript arbitrario con moment (): var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
veuncent


1

Normalmente creo estas dos funciones de ayuda cuando uso entradas de fecha:

// date is expected to be a date object (e.g., new Date())
const dateToInput = date =>
  `${date.getFullYear()
  }-${('0' + (date.getMonth() + 1)).slice(-2)
  }-${('0' + date.getDate()).slice(-2)
  }`;

// str is expected in yyyy-mm-dd format (e.g., "2017-03-14")
const inputToDate = str => new Date(str.split('-'));

Luego puede establecer el valor de entrada de fecha como:

$('#datePicker').val(dateToInput(new Date()));

Y recupera el valor seleccionado así

const dateVal = inputToDate($('#datePicker').val())

0

Datetimepicker siempre necesita el formato de entrada YYYY-MM-DD, no le importa el formato de visualización de su modelo o la fecha y hora del sistema local. Pero el formato de salida del selector de fecha y hora es el que desea (su sistema local). Hay un ejemplo simple en mi publicación .


-5

Versión de jquery

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));

4
$.datepickerno es jQuery predeterminado. Estás usando un complemento y sin decir cuál, esta respuesta es inútil.
Emile Bergeron
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.