Meskipun JS menyediakan berbagai metode atribut yang berbeda untuk mendapatkan objek tanggal waktu, seperti: GetDate Method | Metode GetDay | GetlyEar Metode | Metode getHours ... dll., Ini tidak memberikan metode seperti Java bagi pengguna untuk memformat objek waktu yang ditentukan sesuai dengan templat (pola) yang disediakan oleh diri mereka sendiri, jadi saya merangkum metode kecil bagi semua orang untuk mengolok -olok -.-. Jika Anda memiliki saran yang bagus, saya ingin merekomendasikannya dengan murah hati.
Gunakan Poin Pengetahuan:
Argumen: Objek ini mewakili fungsi yang dijalankan dan parameter fungsi yang menyebutnya. Itu tidak dapat dibuat secara eksplisit. Meskipun memiliki atribut panjang dan dapat mengambil nilai dalam sintaks "[]" seperti array, itu bukan array. TipeOf Objek: Operator, Mengembalikan string yang mewakili tipe data dari ekspresi. Enam Kemungkinan: "Number," "String," "Boolean," "Object," "Function," dan "Undefined." Object.Constructor: mewakili fungsi yang membuat objek. Objek harus menjadi nama objek atau fungsi. Data yang mendasarinya tidak memiliki atribut ini. Metode EXEC: Jalankan pencarian dalam string menggunakan pola ekspresi reguler dan mengembalikan array yang berisi hasil pencarian. Tidak ada kecocokan yang ditemukan, lalu mengembalikan nol. Elemen yang cocok dengan tipe yang sama dalam array tidak akan muncul berulang kali. str.split (rex | str): Pisahkan string menjadi substring sebagai objek atau substring biasa, dan kemudian kembalikan hasilnya sebagai array string. Throw Error ('MSG'): Melemparkan kesalahan dengan informasi pesan. Lempar dapat diikuti dengan ekspresi apa pun. Ada juga beberapa penggunaan untuk..di, operator tiga dimensi, dan substr, yang relatif sederhana.
Cuplikan kode:
Salinan kode adalah sebagai berikut:
/**
**** js waktu dan format tanggal *** <br>
* <p>
* String template mengadopsi format yang ketat. Jika melebihi format, pengecualian akan dilemparkan, dan setiap format hanya dapat muncul sekali. Misalnya, format yyyy-mm-yyyy akan melempar pengecualian
* </p>
* Y-Year Length: 2/4 bit <br>
* Q-kuartal panjang: 1 digit <br>
* M-Month Length: 1 ~ 2 digit <br>
* D-DAi Panjang: 1 ~ 2 digit <br>
* H-Time Length: 1 ~ 2 Posisi Sistem 24 jam, H: Sistem 12 jam <br>
* M-length: 1 ~ 2 digit <br>
* S-Second Length: 1 ~ 2 bit <br>
* S-ms panjang: diperbaiki 1 bit
* @param {objek tipe tanggal} tanggal
* @param {string tipe string template} fmt
* @Return Formatted Time and Date String
* @Author Lyt
*/
function dateFormat (date, fmt) {
if (arguments.length! = 2) // periksa jumlah parameter
Throw error ('Panjang argumen adalah ilegal');
if (! Date || (TipeOf Tanggal! = 'Object') || (D.Constructor! = Date)) // Parameter Verifikasi Legalitas
kesalahan lemparan (argumen [0] + ': Jenisnya bukan tipe tanggal');
if (/h+/.test(fmt) && /h+/.test(fmt))
Lempar kesalahan ("Format jam salah, tipe yang sama hanya dapat muncul sekali dalam satu baris!");
/* Verifikasi parameter template, metode verifikasi reguler*/
var verify = function (rex) {
var arr = regexp baru (rex) .exec (fmt); // Dapatkan array hasil yang cocok
if (! arr) // return jika pertandingan gagal
kembali "";
if (fmt.split (rex) .length> 2) // interval dari jenis yang sama terjadi beberapa kali
Throw Error ("FMT Format Kesalahan: Jenis yang sama hanya dapat muncul sekali dalam satu baris!");
return arr [0];
};
/**
* Berikan pengganti pencocokan universal selama berbulan -bulan, berhari -hari, jam, menit dan detik
* @param {Object O Attribute Key} R
* @param {r sesuai dengan objek biasa} rex
**/
var common = function (r, rex) {
if (len! = 1 && len! = 2)
Kesalahan Throw ("Kesalahan Format Bulan: M hanya dapat 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 penyimpanan data
"y +": date.getlyear () + "", // tahun
"q +": math.floor ((date.getmonth () + 3) / 3), // triwulanan
"M +": date.getmonth () + 1 + "", // month
"d +": date.getDate () + "", // day
"H +": date.getHours () + "", // 24:00
"h +": date.getHours () + "", // jam 12
"m +": date.getMinutes () + "", // points
"s +": date.getSeconds () + "", // detik
"S+": date.getmilliseconds () // milidetik
}
untuk (var r in o) {
Var Rex, Len, Temp;
rex = regexp baru (r);
temp = verifikasi (rex); // Cocokkan string yang dihasilkan
len = temp.length; // Panjang
if (! len || len == 0)
melanjutkan;
if (r == "y+") {
if (len! = 2 && len! = 4)
Kesalahan Throw ("Kesalahan Format Tahun: Y hanya dapat 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+") {
if (len! = 1)
Kesalahan Throw ("Kesalahan Format Triwulan: Q Hanya Dapat Muncul sekali");
fmt = fmt.replace (rex, o [r]);
} lain jika (r == "h+") {
if (len! = 1 && len! = 2)
Kesalahan Throw ("Kesalahan Format Jam: H hanya dapat terjadi 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+") {
if (len! = 1)
Kesalahan Throw ("Format Milidetik Kesalahan: S hanya dapat muncul sekali");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "h+" || r == "m+" || r == "s+")
Common (R, Rex)
}
}
mengembalikan fmt;
}
Efek demonstrasi di atas adalah untuk referensi Anda:
Salinan kode adalah sebagai berikut: Console.log (DateFormat (Tanggal baru (), 'Yyyyy's QQ M Bulan DD Hari HH Hour M Minute S Second S Millisecond'));
Salinan kode adalah sebagai berikut: console.log (dateFormat (tanggal baru (), 'yyyyyyyyyyyyyqqmddddddhhhmm menit s milidond kedua'));
The code copy is as follows: console.log(DateFormat(new Date(),'yyyyy', q quarter, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q,
Salinan kode adalah sebagai berikut: Console.log (DateFormat ("Saya bukan objek waktu", 'yyyyy tahun q kuartal m bulan dd hari hh jam m menit s milidetik kedua')));
Salinan kode adalah sebagai berikut: Console.log (DateFormat (Tanggal baru (), 'Yyyyy's Qq Mmm Bulan DDD Hari HH Hour M Menit S Second S Millisecond')));
Saya tidak akan mencantumkan efek lain satu per satu. Jika Anda tertarik, Anda dapat menyalin kode dan mengujinya secara langsung. Tolong berikan pengingat yang murah hati jika ada bug atau area yang perlu dioptimalkan.
Di atas adalah pengantar fungsi enkapsulasi yang sangat berguna ini. Bukankah itu sangat praktis? Teman dapat menggunakannya secara langsung dalam proyek mereka.