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.

Remitente
fuente
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);
Dhanasekar
fuente
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.

int32_t
fuente
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.

Oliv Utilo
fuente
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á.

Gourav Makhija
fuente
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);
Umair Khalid
fuente
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())
aashah7
fuente
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 .

Eda Jede
fuente
-5

Versión de jquery

var currentdate = new Date();

$('#DatePickerInputID').val($.datepicker.formatDate('dd-M-y', currentdate));
Krutarth Vora
fuente
4
$.datepickerno es jQuery predeterminado. Estás usando un complemento y sin decir cuál, esta respuesta es inútil.
Emile Bergeron