web-dev-qa-db-fra.com

Comment définir l'heure de la date sur local-heure via jQuery

J'ai le contrôle html local et datetime sur mon formulaire et je dois définir la date et l'heure de manière dynamique via JS ou jQuery. Comment puis-je le faire?

<input type="datetime-local" id="publishDate" required/>

J'ai essayé

$("#publishDate").val("2013-3-18 13:00");
$("#publishDate").val("2013-3-18T13:00");
$("#publishDate").val(new Date().toLocalString());

mais rien n'a fonctionné.

Merci d'avance.

16
Vlad Bezden

Cela ferait l'affaire

$("#publishDate").val("2013-03-18T13:00");

Vous devez utiliser 2 chiffres pour le mois pour que votre échantillon fonctionne.

16
Claudio Redi

Si vous voulez définir la date actuelle , vous pouvez essayer ceci:

__Method 1:__

$(document).ready(function(){
    $('input[type=datetime-local]').val(new Date().toJSON().slice(0,19));
});

__Method 2:__

function zeroPadded(val) {
  if (val >= 10)
    return val;
  else
    return '0' + val;
}

$(document).ready(function(){
  d = new Date();
  $('input[type=datetime-local]').val(d.getFullYear()+"-"+zeroPadded(d.getMonth() + 1)+"-"+zeroPadded(d.getDate())+"T"+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
});

Remarque:Vous pouvez remplacer $ ('input [type = datetime-local]') par Id ou Name ou Class du champ datetime-local.

EDIT: d.getMonth () renvoie une valeur comprise entre 0 et 11, il est donc nécessaire d’ajouter le mois approprié au résultat.

10
Varun Natraaj

Qu'en est-il de?

var now=new Date();
console.log(new Date(now.getTime()-now.getTimezoneOffset()*60000).toISOString().substring(0,19));

8
klaudyuxxx

J'ai écrit une méthode jQuery qui définit l'heure UTC actuelle . C'est utile pour initialiser les champs de saisie datetime et datetime-local.

Voici comment vous l'utiliseriez pour initialiser un champ.

$('input[type="datetime"]').setNow();

Ou passez un argument de true pour ne définir que des champs sans valeur.

$('input[type="datetime"]').setNow(true);
5
rb-

Voici une solution pour formater la date en utilisant momentjs.
Cela va obtenir la date et l'heure actuelles

moment().format('YYYY-MM-DDThh:mm:ss.SSS')
0
Twinstar

Ce composant est gâché parce qu'il n'est pas encore spécifié correctement. Les implémentations risquent également d'être bizarres.

La bonne façon de le faire devrait être de passer un objet de date. Avec JS et DOM, cela n'aurait aucun sens de ne pas en avoir. Faire des choses avec la manipulation des cordes va invoquer Zalgo. Tôt ou tard, il rompra avec les paramètres régionaux ou le fuseau horaire.

J'ai cherché quelque chose comme ça et dans Chrome 46 trouvé:

$('input[type=datetime-local]').prop('valueAsNumber', Math.floor(new Date() / 60000) * 60000); // 60seconds * 1000milliseconds

Si vous ne supprimez pas les secondes et millisecondes, ils s'afficheront dans le champ de saisie.

Il existe une propriété valueAsDate également mais mystérieusement:

Uncaught DOMException: Failed to set the 'valueAsDate' property on 'HTMLInputElement': This input element does not support Date values.

Donc, ils n’ont pas encore fini de l’implémenter ou n’ont pas choisi un mauvais nom pour cette propriété (elle indique null même si quelque chose est défini).

0
jgmjgm