Saya memiliki bagian JSON berikut:
\/Date(1293034567877)\/
yang merupakan hasil dari kode .NET ini:
var obj = DateTime.Now;
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(obj).Dump();
Sekarang masalah yang saya hadapi adalah bagaimana membuat objek Tanggal dari ini di JavaScript. Yang bisa saya temukan hanyalah solusi regex yang luar biasa (banyak mengandung bug).
Sulit dipercaya tidak ada solusi elegan karena ini semua ada di JavaScrip, maksud saya kode JavaScript mencoba membaca JSON (JavaScript Object Notation) yang seharusnya merupakan kode JavaScript dan saat ini ternyata bukan penyebab JavaScript tidak bisa. lakukan pekerjaan dengan baik di sini.
Saya juga telah melihat beberapa solusi eval yang saya tidak dapat berfungsi (selain ditunjukkan sebagai ancaman keamanan).
Apakah benar-benar tidak ada cara untuk melakukannya dengan cara yang elegan?
Pertanyaan serupa tanpa jawaban nyata:
Bagaimana mengurai format Tanggal JSON ASP.NET dengan GWT
sumber
new Date()
.Jawaban:
Tidak ada representasi tanggal JSON standar. Anda harus melakukan apa yang disarankan @jAndy dan tidak membuat serial
DateTime
sama sekali; kirimkan saja string tanggal RFC 1123ToString("r")
atau nomor detik-dari-Unix-epoch, atau sesuatu yang lain yang dapat Anda gunakan di JavaScript untuk membuat fileDate
.sumber
The
JSON.parse
Fungsi menerima fungsi DateTime minuman keras opsional. Anda dapat menggunakan fungsi seperti ini:Kemudian panggil
Dan tanggal Anda akan keluar dengan benar.
sumber
Jawaban dari Roy Tinker ini :
Seperti yang dia katakan: Fungsi substr mengambil bagian "/ Date (", dan fungsi parseInt mendapatkan integer dan mengabaikan ") /" di akhir. Nomor yang dihasilkan diteruskan ke konstruktor Tanggal.
Pilihan lainnya adalah dengan memformat informasi Anda dengan benar di sisi ASP sehingga JavaScript dapat dengan mudah membacanya. Pertimbangkan melakukan ini untuk kencan Anda:
Yang seharusnya mengembalikan format seperti ini:
Jika Anda meneruskan ini ke
Date
konstruktor JavaScript seperti ini:Variabel
date
sekarang memegang nilai ini:Biasanya, Anda dapat memformat
DateTime
objek ini ke dalam jenis string / int apa pun yangDate
diterima oleh konstruktor JS .sumber
jika Anda menggunakan tanggal ISO8601 gaya JavaScript di JSON, Anda dapat menggunakan ini, dari MDN
sumber
Anda dapat mengubah Tanggal JSON ke format tanggal normal dalam JavaScript.
sumber
Ada apa dengan:
Ini mengembalikan untuk saya "Rabu 22 Des 2010 16:16:07 GMT + 0000 (Waktu Standar GMT)".
Atau apakah Anda perlu mengeluarkan nomornya dari json?
sumber
\/Date(1293034567877)\/
. Jika waras, itu hanya akan mengeluarkan waktu epoch dan Anda dapat menginisialisasi objek Date dengan itu.Saya tahu ini adalah utas yang sangat lama tetapi saya ingin memposting ini untuk membantu mereka yang mengalami ini seperti yang saya lakukan.
jika Anda tidak peduli tentang penggunaan skrip pihak ketiga, Anda dapat menggunakan moment, js. Kemudian Anda dapat menggunakan .format () untuk memformatnya menjadi apa pun yang Anda inginkan.
sumber
Kencan selalu menjadi mimpi buruk. Menjawab pertanyaan lama Anda, mungkin ini cara paling elegan:
Dengan eval kita mengubah string kita menjadi kode javascript. Kemudian kami menghapus "/", ke dalam fungsi ganti adalah ekspresi reguler. Saat kita mulai dengan yang baru maka kalimat kita akan mengeksekusi ini:
Sekarang, satu hal yang saya mulai gunakan sejak lama, adalah nilai panjang yang ditunjukkan dengan tanda centang ... mengapa? baik, lokalisasi dan berhenti memikirkan bagaimana tanggal dikonfigurasi di setiap server atau setiap klien. Sebenarnya, saya juga menggunakannya di database.
Mungkin agak terlambat untuk jawaban ini, tetapi dapat membantu siapa pun di sekitar sini.
sumber
AngularJS juga tidak dapat mengurai
/Date(xxxxxxxxxxxxx)/
string tanggal .NET JSON ..Saya juga melangkahi masalah ini dengan memformat tanggal ke representasi string ISO 8601 alih-alih membuang
Date
objek secara langsung ...Berikut adalah contoh kode ASP.NET MVC ..
Saya mencoba
RFC 1123
tetapi tidak berhasil .. Angular memperlakukan ini sebagai string, bukan Date.sumber
Saya belum menggunakan .Net untuk hal-hal seperti ini. Jika Anda bisa membuatnya untuk mencetak sesuatu seperti berikut ini seharusnya berfungsi.
Catatan, kecuali Anda mengurai string JSON itu dengan cara lain atau hanya mengharapkan pengguna memiliki browser modern dengan parser JSON bawaan, Anda perlu menggunakan kerangka kerja JS atau JSON2 untuk mengurai string JSON yang dikeluarkan oleh server menjadi JSON nyata obyek.
Tautan Wiki
Tautkan ke file JSON2
Contoh Langsung
sumber
Jawaban untuk pertanyaan ini adalah, gunakan nuget untuk mendapatkan JSON.NET lalu gunakan ini di dalam
JsonResult
metode Anda :di dalam tampilan Anda, lakukan ini di
javascript
:Jika itu panggilan ajax:
Setelah
JSON.parse
dipanggil, Anda dapat memasukkan tanggal JSON ke dalamnew Date
instance karenaJsonConvert
membuat instance waktu ISO yang tepatsumber
sumber
Seperti yang disebutkan Callum, bagi saya, cara terbaik adalah mengubah metode Controller menjadi string, bukan JsonResult ".
Dari metode ajax Anda bisa melakukan sesuatu seperti ini
sumber
menggunakan fungsi eval bekerja hanya harus menghilangkan garis miring di depan dan belakang.
hasil Kam 01 Jan 1970 00:00:00 GMT-0700 (Waktu Standar Pegunungan AS)
sumber
Saya mengalami masalah dengan API eksternal yang memberikan tanggal dalam format ini, beberapa kali bahkan dengan info perbedaan UTC seperti
/Date(123232313131+1000)/
. Saya bisa mengubahnya menjadiDate
objek js dengan kode berikutsumber
sumber
// Gunakan fungsi ini
sumber