2015-05-11 23 views
5

Tarih-saat girişinin değerini geçerli tarih ve saatle ayarlamak istiyorum. Şu anda ilk 17 karakterin dilimlenmesini içeren çirkin bir çözüm var. Ayrıca, yerel saat yerine GMT'de saati ayarlar. Kodum aşağıdaki gibidir:Tarih-saat öğesinin tarih değeri ayarından

<input type="datetime-local" name="name" id="1234"> 

<script type="text/javascript"> 
    var d = new Date(); 
    var elem = document.getElementById("1234"); 
    elem.value = d.toISOString().slice(0,16); 
</script> 

Bu kod ile iki sorun var:

  1. elle dize dilimleme olmadan yasal bir değere Date den dönüştürmek için bir yolu var mı?
  2. Dize, datetime-local içinde DD/MM/YYYY, hh:mm (ör. 05/11/2015, 14:10, GMT + 13:10, GMT + 1'deyim. 14:10 görüntülemek istiyorum) olarak görüntülenmesini isterim. Şu anda görüntülenen nedir 05/11/2015, 01:10 PM. PM'yi kaldırmak ve yerel saatte görüntülemek istiyorum.

ben tamamen yanlış yapıyorum ve html datetime toplayıcıları görüntülemek için daha iyi bir yolu olup olmadığını böylece bu, bir XY problem olabilir diye duymaktan mutlu olurdu.

cevap

1

toISOString işlevi, yerel saatinizi (new Date) GMT'ye dönüştürmekten sorumludur. Sonra dilim GMT kullanmak istemiyorsanız

, sen

ek olarak (... gün, ay, yıl) saf Tarih yapıcısı ve X GetX fonksiyonları, tüm kullanmak zorunda Örneğin, dd/mm/yyyy, hh/mm biçimini korumak için, nesnesini 1 yerine geri döndürmenize yardımcı olacak bir işlevle genişletmeniz gerekir.

beni

elem.value = d.toLocaleString(); 

Bu w ile bu çizgiyi

elem.value = d.toISOString().slice(0,16); 

değiştirin bu prototip işlevini AddZero

 <input type="datetime-local" name="name" id="1234"> 

    <script type="text/javascript"> 
     Number.prototype.AddZero= function(b,c){ 
     var l= (String(b|| 10).length - String(this).length)+1; 
     return l> 0? new Array(l).join(c|| '0')+this : this; 
    }//to add zero to less than 10, 


     var d = new Date(), 
     localDateTime= [(d.getMonth()+1).AddZero(), 
       d.getDate().AddZero(), 
       d.getFullYear()].join('/') +', ' + 
       [d.getHours().AddZero(), 
       d.getMinutes().AddZero()].join(':'); 
     var elem=document.getElementById("1234"); 
     elem.value = localDateTime; 
    </script> 

See this

+0

Cevabınız için teşekkürler. Bu bir dize olarak doğru zamanı (05/11/2015, 14:36:30) yazdırır ama bir tarih-yerel –

+0

için bir değer olarak çalışmıyor http://www.w3schools.com adresindeki kodumu çalıştırıyorum /htmL/tryit.asp?filename=tryhtml_input_datetime-local. Kodunuzu yapıştırırsanız, kodunuzu burada düzgün görüntülenmediğini görürsünüz. –

+0

Serin! Datetime-local ile ne demek istiyorsun? Yanlış olmadıkça, yerel datetime, işletim sistemi yüklendiğinde işletim sisteminizin tarih ve saatidir. – Bellash

0

diyelim sonunda hala "am/pm" yazıyor ancak zaman ayarlarının yerel değerlere göre ayarlanması gerekiyor.

İlgili konular