Pertanyaan Bagaimana mengkonversi datetime-local ke datetime sambil menyimpan dan mengambil dari database


Saya mengalahkan kepala saya membuat ini mungkin bagaimana saya mengkonversi datetime-local yang saya gunakan di jquery mobile dan menyimpan data sebagai datetime seperti bidang saya adalah datetime dalam database

'<input type="datetime-local"' + demodata + ' />';

Saya menggunakan ponsel jquery dan memiliki masalah besar

        if($(this).attr('type')==='datetime-local')
    {
              var $datevalue  =$(this).val();
                a[$(this).attr('name')] = $datevalue.toString(); //Have to convert to datetime instead
    }

Nilai datetime-local saya dalam format ini: 2014-07-18T12:12


5
2017-07-11 06:38


asal


Jawaban:


Ada moment.js perpustakaan yang melakukan banyak pemrosesan tanggal waktu termasuk zona waktu, format tanggal, dll. Ini menangani waktu DST dengan benar.

Kode ini mengubah waktu lokal ke UTC berdasarkan pengaturan zona waktu pengguna (Australian EDT (UTC +1100) dalam kasus saya):

// convert local time to UTC
moment(new Date(2014, 0, 1, 0, 0, 0)).utc().format() 
// returns "2013-12-31T13:00:00+00:00"

// convert UTC to local time
moment.utc("2013-07-31T05:05").local().format()
// returns "2013-07-31T15:05:00+10:00"

11
2017-07-14 00:34



Datetime dengan JavaScript bukanlah perkara mudah. Ada banyak pertanyaan di SO dan menjawab bagaimana mengkonversi dari string ke waktu tanggal dan sebaliknya.

Jika Anda bekerja pada subjek ini, Anda akan melihat aspek-aspek ini, yang membuatnya rumit:

  • Lokalisasi: +/- jam waktu geografis bergeser
  • Waktu musim panas (DST): ya / tidak, +/- 1 jam, tergantung pada tanggal sekarang
  • adaptasi yang berbeda, usia peramban klien, Fungsi UTC tersedia atau tidak, dll. Waspadalah bahwa tidak semua browser menguraikan string waktu tanggal ISO dengan cara yang sama.

Selalu mencoba untuk menyadari lokalisasi mana dan DST mana yang disertakan secara inheren atau ditafsirkan secara diam-diam. Dengan bekerja dengan string ISO panjang penuh dan dengan menggunakan setter / getter terperinci, Anda akan mengurangi kebingungan.

Jadi dari string ke Date lihat di sini:

Bagaimana saya bisa mengonversi string ke datetime dengan spesifikasi format di JavaScript?

Dari Date ke string:

Bagaimana Anda mendapatkan stempel waktu dalam JavaScript? 

Anda akan menemukan lebih banyak lagi :-)


3
2017-07-11 06:50



Anda harus bisa membuat yang baru Date dengan nilai dari input:

var str = $('[type=datetime-local]').val();
var d = new Date(str);

Anda belum menentukan format untuk stempel waktu Anda, tetapi karena ini dirancang untuk dimasukkan ke dalam basis data, saya telah menulis fungsi kenyamanan yang mengubah tanggal JS menjadi MySQL datetime format.

JS Fiddle:  http://jsfiddle.net/UujT3/3/ 


1
2017-07-16 04:01