Rumah > hujung hadapan web > tutorial js > js masa dan tarikh kemahiran enkapsulasi fungsi_javascript

js masa dan tarikh kemahiran enkapsulasi fungsi_javascript

WBOY
Lepaskan: 2016-05-16 16:29:37
asal
1551 orang telah melayarinya

Walaupun js menyediakan pelbagai kaedah atribut yang berbeza untuk mendapatkan objek Tarikh masa, seperti: kaedah getDate | kaedah getDay | kaedah getFullYear | kaedah ... ... dan lain-lain, tetapi ia tidak menyediakan kaedah seperti Java untuk pengguna memformat objek masa yang ditentukan mengikut templat (corak) yang disediakan oleh mereka sendiri, jadi saya merangkum yang kecil Kaedahnya hanya untuk semua orang tertawakan -.- Jika anda mempunyai cadangan yang baik, sila berikan mereka dengan murah hati.

Mata pengetahuan yang digunakan:

Argumen: Objek ini mewakili parameter fungsi yang sedang dilaksanakan dan fungsi yang memanggilnya. Ia tidak boleh dibuat secara eksplisit Walaupun ia mempunyai atribut panjang dan boleh diambil menggunakan sintaks "[]" seperti tatasusunan, ia bukan tatasusunan. typeof object: operator, mengembalikan rentetan yang mewakili jenis data ungkapan. Enam kemungkinan: "nombor," "rentetan," "boolean," "objek," "fungsi," dan "tidak ditentukan." object.constructor: Mewakili fungsi yang mencipta objek.

objek mestilah nama objek atau fungsi. Data asas tidak mempunyai atribut ini. kaedah exec: Menjalankan carian dalam rentetan menggunakan corak ungkapan biasa dan mengembalikan tatasusunan yang mengandungi hasil carian. Jika tiada padanan ditemui, ia mengembalikan null. Elemen yang sepadan dengan jenis yang sama tidak akan muncul berulang kali dalam tatasusunan. str.split(Rex|str): Pisahkan rentetan kepada subrentetan menggunakan objek biasa atau subrentetan, dan kemudian kembalikan hasilnya sebagai tatasusunan rentetan. throw Error('msg'): Lempar Ralat dengan maklumat Mesej. lontaran boleh diikuti dengan sebarang ungkapan. Terdapat juga beberapa penggunaan bagi..in, pengendali ternary, substr, yang saya tidak akan gunakan, ia agak mudah.

Coretan kod:

Salin kod Kod adalah seperti berikut:

/**
* ***pemformatan masa dan tarikh js***

*


* Rentetan templat menggunakan format yang ketat Jika melebihi had, pengecualian akan dilemparkan setiap jenis format hanya boleh muncul sekali, seperti: format yyyy-mm-yyyy akan membuang pengecualian
*


* panjang y-tahun: 2/4 digit

* panjang suku q: 1 digit

* Panjang bulan M: 1~2 digit

* d-日 panjang: 1~2 digit

* Panjang jam H: 1~2 digit dalam format 24 jam, h: format 12 jam

* panjang m-minit: 1~2 digit

* panjang s-saat: 1~2 digit

* Panjang S-milisaat: tetap 1 digit
* @param {Date type object} tarikh
* @param {String type template string} fmt
* @kembali rentetan masa dan tarikh yang diformatkan
* @penulis lyt
,*/
fungsi DateFormat(tarikh, fmt){
Jika (arguments.length != 2) // Pengesahan nombor parameter
          Ralat buang('panjang hujah adalah haram');
Jika (!tarikh || (jenis tarikh != 'objek') || (d.pembina != Tarikh)) // Pengesahan kesahihan parameter
          throw Ralat(argumen[0] ':Jenisnya bukan jenis Tarikh');
Jika (/H /.test(fmt) && /h /.test(fmt))
throw Error("Format jam salah, jenis yang sama hanya boleh muncul sekali berturut-turut!");
/* Pengesahan parameter templat, kaedah pengesahan biasa */
var verify = function(Rex){
           var arr = new RegExp(Rex).exec(fmt); // Dapatkan tatasusunan hasil yang sepadan
           jika (!arr) // Kembali
jika perlawanan gagal              kembalikan "";
Jika (fmt.split(Rex).length > 2) // Jenis yang sama muncul beberapa kali
               throw Ralat("ralat format fmt: jenis yang sama hanya boleh muncul sekali berturut-turut!");
          kembali arr[0];
};
/**
* Menyediakan penggantian padanan universal untuk bulan, hari, jam, minit dan saat
* @param {object o attribute key} r
* @param {r sepadan dengan objek biasa} rex
**/
var common = function(r, rex) {
Jika(len !=1 && len !=2)
throw Error("Ralat format bulan: M hanya boleh muncul 1/2 kali");
len == 2 ? fmt=fmt.replace(rex, o[r].length==1 ? "0" o[r] : o[r]) : fmt=fmt.replace(rex, o[r]) ;
}
var o = { // Objek storan data
"y ": date.getFullYear() "", // Tahun
"q ": Math.floor((date.getMonth() 3) / 3), // Suku Tahun
"M ": date.getMonth() 1 "", // Bulan
"d ": date.getDate() "", // hari
"H ": date.getHours() "", // 24 jam
"h ": date.getHours() "", // pukul 12
"m ": date.getMinutes() "", // Minit
"s ": date.getSeconds() "", // Saat
"S ": date.getMillisaat() // Milisaat
}
untuk(var r dalam o) {
var rex, len, temp;
         rex = RegExp(r);
baharu            temp = verify(rex); // Padankan rentetan yang terhasil
        len = temp.length; // panjang
Jika(!len || len == 0)
                 teruskan;
           jika(r == "y") {
Jika(len !=2 && len != 4)
throw Error("Ralat format tahun: y hanya boleh muncul 2/4 kali");
            len == 2 ? fmt=fmt.replace(rex, o[r].substr(2,3)) : fmt=fmt.replace(rex, o[r]);
           } lain jika(r == "q") {
                 jika(len != 1)
throw Error("Ralat format suku tahun: q hanya boleh muncul sekali");
                                            fmt=fmt.replace(rex, o[r]);
           } lain jika(r == "h") {
Jika(len !=1 && len !=2)
throw Error("Ralat format jam: h hanya boleh muncul 1/2 kali");
          var h = (o[r] > 12 ? o[r]-12 : o[r]) "";
            len == 2 ? fmt=fmt.replace(rex, h.length==1 ? "0" h : h): fmt=fmt.replace(rex, h);
            } lain jika(r == "S ") {
Jika(len != 1)
throw Error("Ralat format milisaat: S hanya boleh muncul sekali");
                                            fmt=fmt.replace(rex, o[r]);
                               // (r=="M " || r=="d " || r=="H " || r=="m " || r=="s ")
biasa(r, rex)
                                                                                                                                                    }
Kembali fmt;
}

Berikut ialah beberapa kesan demonstrasi untuk rujukan anda:

Salin kod Kod adalah seperti berikut:
console.log(DateFormat(new Date(),' yyyyyear q suku M bulan dd hari HH jam m minit s saat S milisaat'));

Salin kod Kod adalah seperti berikut:
console.log(DateFormat(new Date(),' yyyyyearyy Q suku M bulan dd hari HH jam m minit s saat S milisaat'));

Salin kod Kod adalah seperti berikut:
console.log(DateFormat(new Date(),' yyyyyear q suku M bulan dd hari Hh jam m minit s saat S milisaat'));

Salin kod Kod adalah seperti berikut:
console.log(DateFormat("Saya bukan masa objek",'yyyy Tahun q suku M bulan dd hari Hh jam m minit s saat S milisaat'));

Salin kod Kod adalah seperti berikut:
console.log(DateFormat(new Date(),' yyyyyear q suku MMM bulan dd hari HH jam m minit s saat S milisaat'));

Saya tidak akan menyenaraikan kesan lain satu persatu. Jika anda berminat, anda hanya boleh menyalin kod dan mengujinya secara langsung. Jika terdapat sebarang pepijat atau kawasan yang perlu dioptimumkan, sila betulkan.

Di atas adalah pengenalan kepada fungsi enkapsulasi yang sangat berguna ini, bukankah ia sangat praktikal?

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan