Los tipos de entrada HTML5 son geniales, el nuevo selector de fecha incorporado de Opera es muy sencillo, y Chrome al menos ha admitido el nuevo tipo de entrada con una implementación de rueda giratoria.
Pero, ¿hay alguna forma de establecer el valor predeterminado del campo de fecha en la fecha de hoy? Con Opera, puedo elegir 'Hoy' en el selector de fechas, y tan pronto como hago clic en cualquiera de los botones de paso en Chrome, aumenta / disminuye a partir de la fecha de hoy.
No soy tímido para codificar una solución a este problema menor, pero me parece una tontería que ambos navegadores conozcan la fecha actual, pero no la aparecerán automáticamente (al menos como marcador de posición).
Respuestas:
Al igual que cualquier campo de entrada HTML, el navegador lo dejará vacío a menos que se especifique un valor predeterminado con el
value
atributo.Lamentablemente, HTML5 no proporciona una forma de especificar 'hoy' en el
value
atributo (que puedo ver), solo una fecha válida RFC3339 como2011-09-29
.TL; DR Utilice el
YYYY-MM-DD
formato de fecha o no se mostraráfuente
DateTime.now.strftime("%Y-%m-%d")
date('Y-m-d')
ya que requiere el cero inicial ?myDate.toLocaleDateString('en-CA')
¿el truco?El objeto Fecha de JavaScript proporciona suficiente soporte integrado para el formato requerido para evitar hacerlo manualmente:
Agregue esto para el soporte de zona horaria correcta:
jQuery:
JS puro:
fuente
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
(como esa respuesta finalmente llega) primero, luego.valueAsDate
(eso excluye IE, Firefox, tal vez Safari, básicamente todo menos Chrome, Opera, Edge y algunos navegadores móviles). Todo es compatible con lavalue
propiedad que usa mi solución, incluso cuando las entradas de fecha vuelven a las entradas de texto en los navegadores no compatibles, la otra solución fallará o fallará.input[type=datetime-local]
y cambiándola aslice(0,19)
HTHesto funciona para mi:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
fuente
valueAsDate
. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdatevalueAsDate
denew Date()
, los campos se establecerán en 28/03/2018. Ver austinfrance.wordpress.com/2012/07/09/…El siguiente código funciona bien:
Tenga en cuenta que esto se basa en PHP.
fuente
<?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>
a<?php echo date('Y-m-d'); ?>
Puede completar el valor predeterminado a través de javascript como se ve aquí: http://jsfiddle.net/7LXPq/
Probablemente pondría un poco de tiempo extra para ver si el mes y la fecha son de un solo dígito y los prefijo con el cero extra ... pero esto debería darle una idea.
EDITAR: verificación agregada para el cero adicional
fuente
Siga el formato estándar de Ymd, si está utilizando PHP
fuente
HTML
JS
manifestación
Si no quieres usar jQuery puedes hacer algo como esto
HTML
JS
manifestación
fuente
En HTML5 como tal, ¿no hay forma de establecer el valor predeterminado del campo de fecha en la fecha de hoy? Como se muestra en otras respuestas, el valor se puede establecer usando JavaScript, y este suele ser el mejor enfoque si desea establecer el valor predeterminado de acuerdo con la fecha actual para el usuario cuando se carga la página.
HTML5 define la
valueAsDate
propiedad de losinput type=date
elementos y, al usarla, puede establecer el valor inicial directamente desde un objeto creado, por ejemplo, pornew Date()
. Sin embargo, por ejemplo, IE 10 no conoce esa propiedad. (También carece de soporte genuinoinput type=date
, pero ese es un problema diferente).Por lo tanto, en la práctica, debe establecer la
value
propiedad, y debe estar en notación conforme a ISO 8601. Hoy en día esto se puede hacer con bastante facilidad, ya que podemos esperar que los navegadores utilizados actualmente admitan eltoISOString
método:fuente
= new Date().toISOString().split('T')[0];
Si está haciendo algo relacionado con la fecha y la hora en el navegador, desea usar Moment.js :
moment()
devuelve un objeto que representa la fecha y hora actuales. Luego llama a su.format()
método para obtener una representación de cadena de acuerdo con el formato especificado. En este caso,YYYY-MM-DD
,.Ejemplo completo:
fuente
use moment.js para resolver este problema en 2 líneas, el tipo de entrada de fecha html5 solo acepta "AAAA-MM-DD" en este formato. Resuelvo mi problema de esta manera.
Esta es la forma más sencilla de resolver este problema.
fuente
Javascript
Jquery
Otra opción
Si desea personalizar la fecha, el mes y el año, simplemente haga una suma o un sub como desee 😎 Para el mes se inicia el formulario 0, por eso es necesario sumar 1 con el mes.
Appy la función de hoy
fuente
Muy simple, solo use lenguajes del lado del servidor como PHP, ASP, JAVA o incluso puede usar javascript.
Aquí esta la solución
fuente
fuente
si necesita completar la fecha y hora de entrada, puede usar esto:
fuente
Para NodeJS (Express con plantillas SWIG):
fuente
Las soluciones más simples parecen pasar por alto que se utilizará la hora UTC, incluidas las altamente votadas. A continuación se muestra una versión simplificada, ES6, no jQuery de un par de respuestas existentes:
fuente
value
ovalueAsDate
? Aunque se ve bien.Esto es lo que hice en mi código, lo acabo de probar y funcionó bien, input type = "date" no es compatible para configurar curdate automáticamente, por lo que la forma en que solía superar esta limitación era usar un código PHP como un código simple como este .
¡Espero eso ayude!
fuente
Ambas respuestas principales son incorrectas.
Un breve resumen que utiliza JavaScript puro, representa la zona horaria local y no requiere funciones adicionales para definir:
Esto obtiene la fecha y hora actual en milisegundos (desde época) y aplica el desplazamiento de la zona horaria en milisegundos (minutos * 60k minutos por milisegundo).
Puede establecer la fecha usando
element.valueAsDate
pero luego tiene una llamada adicional alDate()
constructor.fuente
Esto es algo que realmente necesita hacer en el lado del servidor, ya que el formato de hora local de cada usuario difiere, sin mencionar que cada navegador se comporta de manera diferente.
El valor de las entradas de fecha HTML debe estar en este formato: aaaa-mm-dd, de lo contrario no mostrará un valor.
Salida de la fecha de hoy: 2019-02-08
Luego en tu html:
<input type="date" value="<% =get_date %>"
solo usa esto:
<input type="date" value="<?= date("Y-m-d"); ?>">
fuente
Esto es muy simple aplicando el siguiente código, Usando
PHP
La función de fecha devolverá la fecha actual, tomando la fecha en
time()
.fuente
por Javascript:
fuente
fuente
Si está usando ruby, puede usar esto para establecer el valor predeterminado en la fecha y hora de hoy:
fuente
Una solución simple:
fuente
document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Como no existe un método predeterminado para establecer el valor en la fecha de hoy, diría que esto debería depender de su aplicación. Si está buscando maximizar la exposición de su audiencia al selector de fechas, use un script del lado del servidor (PHP, ASP, etc.) para establecer el valor predeterminado.
Sin embargo, si es para la consola de administración del CMS, y sabe que el usuario siempre tendrá JS en su sitio o de confianza, entonces puede usar JS de manera segura para completar el valor predeterminado, según jlbruno.
fuente
Tuve el mismo problema y lo solucioné con JS simple. La entrada:
el JS
Importante: el script JS debe estar en la última línea de código, o después de ingresar, porque si coloca este código antes, el script no encontrará su entrada.
fuente
No hay un método predeterminado dentro del propio HTML para insertar la fecha de hoy en el campo de entrada. Sin embargo, como cualquier otro campo de entrada, aceptará un valor.
Puede usar PHP para recuperar la fecha de hoy e ingresarla en el campo de valor del elemento de formulario.
El campo de valor acepta el formato AAAA-MM-DD como entrada, simplemente creando una variable
$date_string
en el mismo formato que acepta el valor de entrada y complételo con el año, mes y día recuperados de la fecha de hoy y ¡listo! ¡Tienes una fecha preseleccionada!Espero que esto ayude :)
Editar:
Si desea tener el campo de entrada anidado dentro de HTML en lugar de PHP, puede hacer lo siguiente.
Me doy cuenta de que esta pregunta se hizo hace un tiempo (hace 2 años), pero todavía me llevó un tiempo encontrar una respuesta definitiva en Internet, por lo que sirve para cualquier persona que esté buscando la respuesta siempre que sea posible y espero que sea ayuda a todos enormemente :)
Otra edición:
Casi lo olvido, algo que ha sido un dolor real para mí en el pasado siempre se olvida de establecer la zona horaria predeterminada cada vez que crea un script en PHP que hace uso de la función date ().
La sintaxis es la siguiente
date_default_timezone_set(...);
. La documentación se puede encontrar aquí en PHP.net y la lista de zonas horarias compatibles para insertar en la función se puede encontrar aquí . Esto siempre fue molesto ya que estoy en Australia, todo se retrasa 10 horas si no lo configuré correctamente, ya que por defecto es UTC + 0000 donde necesito UTC + 1000, así que tenga cuidado :)fuente
Gracias Peter, ahora cambio mi código.
fuente
Y para aquellos que usan ASP VBScript
Y luego en el cuerpo, tu elemento debería verse así
¡Salud!
fuente
Incluso después de todo este tiempo, podría ayudar a alguien. Esta es una solución simple de JS.
JS
HTML
Una solución similar funciona en Angular sin ninguna biblioteca adicional para convertir el formato de fecha. Para Angular (el código se acorta debido al código de componente común):
fuente