giriş türü tarih için tarih ayarla


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

Chrome'da tarih seçici girdi türü tarihini bugün ayarlayacağım .

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

ama işe yaramıyor

Bu jsFiddle'ı Düzenle - Lütfen Chrome'da deneyin.


2
Eğer keman bir tarih almak ve bir yapıyor, sonuç çerçevesini incelemek durumunda $('#datePicker').val();verir "2012-09-10"ve bu tarih ayarı için kullanmak biçimi değil

Benim tarafımda kromda çalışıyor .. Tam olarak ne demek istiyorsun its not working?
AdityaParab

deneyin:, kılavuza{ currentText: "Now" } bakın
diEcho

benim üzerimde çalışıyor ... sorun nedir?
Netorica

1
@JigarPandya fr_FR (@ user108, ​​ayrıca bkz. Stackoverflow.com/a/3496622/180100 )

Yanıtlar:


162

Keman bağlantısı: http://jsfiddle.net/7LXPq/93/

Bunda iki sorun var:

  1. HTML 5'te tarih kontrolü, SQL'de kullandığımız gibi Yıl - ay - gün biçiminde kabul eder
  2. Ay 9 ise, basitçe 9 değil 09 olarak ayarlanması gerekir. Bu nedenle gün alanı için de geçerlidir.

Demo için lütfen keman bağlantısını takip edin:

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
2012 sonrası cevap: Tek satır kodda desteklenen bir çözüm için cevabımı kontrol edin.
Oliv Utilo

@ OlivUtilo - tabi, ama cevabınız bazen yanlış sonuçlar verecektir.
RobG

Zamanımı kurtardın dostum, Çok teşekkürler
Dip Surani

130

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

çalışmalı.


6
Şimdiye kadar bulduğum en iyi çözüm bu - Android 4.0.3'te çalışıyor
Ben Clayton

6
Kesinlikle kabul edilen cevaptan daha temiz görünüyor ... teşekkürler
Skipjack

1
Bunun Safari'de bir nedenden dolayı çalışmadığını buldum :(
james_alvarez

Chrome ve Edge'de test edildi ve iyi çalışıyor bulundu. @ Skipjack'in dediği gibi, harika bir Cevap!
Arun

Doğru çözüm gibi görünüyor, ancak Safari'de (13.1.2) çağrı size Geçersiz Durum İstisnası veriyor. Emin değilim neden...?
fbitterlich

23

Güncelleme: Bunu ile yapıyorum date.toISOString().substr(0, 10). Kabul edilen cevapla aynı sonucu verir ve iyi bir desteğe sahiptir.


2
Safari'de çalışıyor
james_alvarez

4
Not: Bu, UTC saat diliminde bir tarih verir. Buna karşılık, en üstteki cevap yerel saati kullanır.
Qwertie

@Qwertie - ikisi de aynı Datenesne üzerinde çalışır (tarayıcıdan saat dilimini devralan yeni Date veya Date.now ile oluşturulur). toISOString veya getDate işlevlerinin kullanılması (sanırım) aynı şeyi çözecektir; bu yüzden bunun istenen davranışa sahip olması gerektiğini düşünüyorum ...
Oliv Utilo

1
@ OlivUtilo — Hayır, ana bilgisayar için saat dilimi uzaklığı süresi için değiller.
RobG

Qwertie'nin dediği gibi, zamanı olmayan bir tarih kullanıyorsanız, bu potansiyel olarak yanlış cevap verir. örn. Cmt 01 Eyl 2018 00:00:00 GMT + 0100 "2018-08-31" e dönüştürülür
havlock

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

Yukarıdaki kod çalışacaktır.


12

Bana göre bu sorunu çözmenin en kısa yolu, moment.js kullanmak ve bu sorunu sadece 2 satırda çözmektir.

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

1
evet tıpkı $ ['# datePicker']. val (moment (). format ('YYYY-AA-GG')) gibi;
Umair Khalid

2
var yourFormattedDate= moment(yourDate).format('YYYY-MM-DD'); $('#datePicker').val(yourFormattedDate);
Moment'e


1

Tarih girişlerini kullanırken genellikle bu iki yardımcı işlevi oluşturuyorum:

// 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('-'));

Daha sonra tarih giriş değerini şu şekilde ayarlayabilirsiniz:

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

Ve seçilen değeri bu şekilde geri alın

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

1

Tarihi yalnızca girişte type="date"olduğu gibi kullanabilirsinizYYYY-MM-DD

formatDateNODE.js ekspres gidonlarında olduğu gibi yardımcı uyguladım , endişelenmenize gerek yok ... sadece ilk satırda açıklandığı gibi biçimi kullanın.

Örneğin:

< input type="date" id="date" name="date" class="form-control" value="{{formatDate invoice.date 'YYYY-MM-DD'}}" />

0

Datetimepicker her zaman YYYY-AA-GG giriş formatına ihtiyaç duyar, modelinizin görüntü formatı veya yerel sistem tarih saatinizle ilgilenmez. Ancak tarih saat seçicinin çıktı biçimi, istediğiniz (yerel sisteminiz) biçimidir. Basit bir örnek vardır Yazımın .


0

Benim için yerel tarihi almanın en kısa yolu ve girdi için doğru biçimde type="date"şu:

var d = new Date(); 
var today = d.getFullYear()+"-"+("0"+(d.getMonth()+1)).slice(-2)+"-"+("0"+d.getDate()).slice(-2);

Veya bu :

var d = new Date().toLocaleDateString().split('/');
var today = d[2]+"-"+("0"+d[0]).slice(-2)+"-"+("0"+d[1]).slice(-2);

Ardından tarih giriş değerini ayarlayın:

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

-5

Jquery sürümü

var currentdate = new Date();

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

4
$.datepickervarsayılan jQuery değildir. Bir eklenti kullanıyorsunuz ve hangisi olduğunu söylemeden, bu cevap işe yaramaz.
Emile Bergeron
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.