Os tipos de entrada HTML5 são ótimos, o novo seletor de datas interno do Opera é muito fácil, e o Chrome pelo menos deu suporte ao novo tipo de entrada com uma implementação de roda giratória.
Mas existe alguma maneira de definir o valor padrão do campo de data para a data de hoje? Com o Opera, posso escolher 'Hoje' no seletor de datas e, assim que clico em um dos botões da etapa no Chrome, ele aumenta / diminui a partir da data de hoje.
Não tenho vergonha de codificar uma solução para esse pequeno problema, mas me parece tolo que os dois navegadores estejam totalmente cientes da data atual, mas não a apareçam automaticamente (pelo menos como espaço reservado).
Respostas:
Como qualquer campo de entrada HTML, o navegador o deixará vazio, a menos que um valor padrão seja especificado com o
value
atributoInfelizmente, o HTML5 não fornece uma maneira de especificar 'today' no
value
atributo (que eu posso ver), apenas uma data válida RFC3339 como2011-09-29
.TL; DR Use o
YYYY-MM-DD
formato da data ou ele não será exibidofonte
DateTime.now.strftime("%Y-%m-%d")
date('Y-m-d')
assim, pois requer o zero inicial?myDate.toLocaleDateString('en-CA')
faz o truqueO objeto JavaScript Date fornece suporte interno suficiente para o formato necessário para evitar fazê-lo manualmente:
Adicione isso para suporte correto ao fuso horário:
jQuery:
JS puro:
fonte
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
(conforme a resposta eventualmente chegar) primeiro e depois.valueAsDate
(isso deixa de fora o IE, Firefox, talvez o Safari, basicamente tudo, exceto Chrome, Opera, Edge e alguns navegadores móveis). Tudo suporta avalue
propriedade que minha solução usa, mesmo quando as entradas de data retornam às entradas de texto nos navegadores que não suportam, a outra solução irá erro ou falha.input[type=datetime-local]
e alterá-lo paraslice(0,19)
HTHisso funciona para mim:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
fonte
valueAsDate
. html.spec.whatwg.org/multipage/forms.html#dom-input-valueasdatevalueAsDate
comonew Date()
, o valor dos campos será definido em 28/03/2018. Veja austinfrance.wordpress.com/2012/07/09/…O código a seguir funciona bem:
Observe que isso depende do PHP.
fonte
<?php echo date('Y-m-d', strtotime(date('Y/m/d'))); ?>
para<?php echo date('Y-m-d'); ?>
Você pode preencher o valor padrão através do javascript, como visto aqui: http://jsfiddle.net/7LXPq/
Eu provavelmente dedicaria um pouco de tempo extra para ver se o mês e a data são dígitos únicos e prefixo-os com o zero extra ... mas isso deve lhe dar uma idéia.
EDIT: verificação adicionada para o zero extra
fonte
Siga o formato Ymd padrão, se você estiver usando PHP
fonte
HTML
JS
demonstração
Se você não quiser usar o jQuery, poderá fazer algo assim
HTML
JS
demonstração
fonte
No HTML5, como tal, não há como definir o valor padrão do campo de data para a data de hoje? Conforme mostrado em outras respostas, o valor pode ser definido usando JavaScript, e essa geralmente é a melhor abordagem, se você desejar definir o padrão de acordo com a data atual para o usuário quando a página for carregada.
O HTML5 define a
valueAsDate
propriedade dosinput type=date
elementos e, usando-o, você pode definir o valor inicial diretamente de um objeto criado, por exemplo, pornew Date()
. No entanto, por exemplo, o IE 10 não conhece essa propriedade. (Também falta suporte genuínoinput type=date
, mas isso é uma questão diferente.)Portanto, na prática, você precisa definir a
value
propriedade e ela deve estar na notação de conformidade ISO 8601. Atualmente, isso pode ser feito com bastante facilidade, pois podemos esperar que os navegadores usados atualmente suportem otoISOString
método:fonte
= new Date().toISOString().split('T')[0];
Se você estiver fazendo algo relacionado à data e hora no navegador, use o Moment.js :
moment()
retorna um objeto que representa a data e hora atuais. Você chama o.format()
método para obter uma representação de seqüência de caracteres de acordo com o formato especificado. Nesse casoYYYY-MM-DD
,.Exemplo completo:
fonte
use moment.js para resolver esse problema em duas linhas; o tipo de entrada de data html5 aceita apenas "AAAA-MM-DD" neste formato. Eu resolvo meu problema dessa maneira.
Essa é a maneira mais simples de resolver esse problema.
fonte
Javascript
Jquery
Outra opção
Se você deseja personalizar a data, o mês e o ano, basta somar ou subtrair como desejar. 😎 Para o mês é iniciado o formulário 0, por isso é necessário somar 1 com o mês.
Appy a função hoje
fonte
Muito simples, basta usar linguagens do lado do servidor como PHP, ASP, JAVA ou até mesmo você pode usar javascript.
Aqui está a solução
fonte
fonte
se você precisar preencher a data e hora da entrada, poderá usar isto:
fonte
Para NodeJS (modelos Express com SWIG):
fonte
As soluções mais simples parecem ignorar que o horário UTC será usado, incluindo os altamente votados. Abaixo está uma versão simplificada, ES6, não-jQuery, de algumas respostas existentes:
fonte
value
ouvalueAsDate
? Parece bom embora.Isto é o que eu fiz no meu código, eu apenas testei e funcionou bem, o tipo de entrada = "date" não suporta a definição automática de curdate, então a maneira que eu usei para superar essa limitação foi usar o código PHP como um código simples como este .
Espero que ajude!
fonte
As duas principais respostas estão incorretas.
Uma linha única curta que usa JavaScript puro, é responsável pelo fuso horário local e não requer a definição de funções extras:
Isso obtém o horário atual em milissegundos (desde a época) e aplica o deslocamento do fuso horário em milissegundos (minutos * 60k minutos por milissegundo).
Você pode definir a data usando,
element.valueAsDate
mas terá uma chamada extra para oDate()
construtor.fonte
Isso é algo que você realmente precisa fazer no lado do servidor, pois o formato da hora local de cada usuário difere, sem mencionar que cada navegador se comporta de maneira diferente.
O valor das entradas de data em HTML deve estar neste formato: aaaa-mm-dd, caso contrário, ele não mostrará um valor.
Saída da data de hoje: 2019-02-08
Então, no seu html:
<input type="date" value="<% =get_date %>"
basta usar isso:
<input type="date" value="<?= date("Y-m-d"); ?>">
fonte
Isso é muito simples aplicando o seguinte código, Using
PHP
A função de data retornará a data atual, tendo a data em
time()
.fonte
por Javascript:
fonte
fonte
Se você estiver usando ruby, poderá usar isso para definir o valor padrão para a data e hora de hoje:
fonte
Uma solução simples:
fonte
document.querySelector('.set-today').value=new Date().toISOString().substr(0,10);
Como não existe um método padrão de definir o valor para a data de hoje, eu diria que isso deve depender de sua aplicação. Se você deseja maximizar a exposição do seu público ao seletor de datas, use um script do lado do servidor (PHP, ASP, etc.) para definir o valor padrão.
No entanto, se for para o console de administração do CMS e você souber que o usuário sempre terá o JS em seu site ou confiável, poderá usá-lo com segurança para preencher o valor padrão, conforme jlbruno.
fonte
Eu tive o mesmo problema e o corrigi com JS simples. A entrada:
o JS
Importante: o script JS deve estar na última linha do código ou depois da entrada, porque se você colocar esse código antes, o script não encontrará sua entrada.
fonte
Não existe um método padrão no próprio HTML para inserir a data de hoje no campo de entrada. No entanto, como qualquer outro campo de entrada, ele aceitará um valor.
Você pode usar o PHP para buscar a data de hoje e inseri-la no campo de valor do elemento do formulário.
O campo de valor aceita o formato AAAA-MM-DD como entrada, simplesmente criando uma variável
$date_string
no mesmo formato que o valor de entrada aceita e preenchendo-o com o ano, mês e dia buscado a partir da data de hoje e pronto! Você tem uma data pré-selecionada!Espero que isto ajude :)
Editar:
Se você deseja aninhar o campo de entrada no HTML, e não no PHP, faça o seguinte.
Sei que essa pergunta foi feita há um tempo (dois anos atrás), mas ainda demorei um pouco para encontrar uma resposta definitiva na internet, então isso serve para quem procura a resposta sempre que possível e espero que seja. ajuda a todos muito :)
Outra edição:
Quase esqueci, algo que foi uma dor real para mim no passado é sempre esquecer de definir o fuso horário padrão sempre que criar um script em PHP que utilize a função date ().
A sintaxe é
date_default_timezone_set(...);
. A documentação pode ser encontrada aqui no PHP.net e a lista de fusos horários suportados para inserir na função pode ser encontrada aqui . Isso sempre foi chato, já que estou na Austrália; tudo é sempre adiado por 10 horas, se eu não definir isso corretamente, pois o padrão é UTC + 0000, onde eu preciso do UTC + 1000, portanto, seja cauteloso :)fonte
Obrigado Peter, agora eu mudo meu código.
fonte
E para aqueles que usam ASP VBScript
E então no corpo, seu elemento deve ser algo como isto
Felicidades!
fonte
Mesmo depois de todo esse tempo, isso pode ajudar alguém. Esta é uma solução JS simples.
JS
HTML
Solução semelhante funciona no Angular sem nenhuma biblioteca adicional para converter o formato da data. Para Angular (o código é reduzido devido ao código do componente comum):
fonte