Ringkasan
Jenis data kolom DataTable date
dan datetime
menggunakan
class Tanggal JavaScript bawaan.
Penting: Dalam objek Tanggal JavaScript, bulan diindeks mulai dari nol dan naik hingga sebelas, dengan Januari adalah bulan 0 dan Desember adalah bulan 11.
Tanggal dan Waktu Menggunakan Konstruktor Tanggal
Tanggal Menggunakan Konstruktor Tanggal
Untuk membuat objek Date baru, panggil konstruktor Date()
dengan
kata kunci new
, menggunakan argumen untuk menentukan komponen tanggal. Argumen ini
berbentuk beberapa angka yang sesuai dengan berbagai properti tanggal Anda.
new Date(Year, Month, Day, Hours, Minutes, Seconds, Milliseconds)
Saat menggunakan konstruktor Date dengan jenis data date
, Anda hanya perlu menentukan
Tahun, Bulan, dan Hari.
Konstruktor Date juga dapat berbentuk: new Date(Milliseconds)
, dengan
Milidetik adalah jarak dalam milidetik dari tanggal yang diinginkan mulai
1 Januari 1970 00:00:00 UTC. Untuk tanggal dan waktu sebelum tanggal tersebut, jumlah negatif Milidetik akan diberikan.
Menggunakan konstruktor Tanggal berguna saat menyusun DataTable secara manual menggunakan metode addColumn()
, addRow()
, dan addRows()
, serta metode arrayToDataTable()
. Namun, jika menggunakan JSON untuk menentukan data, representasi string harus digunakan.
Konstruktor Tanggal JavaScript juga dapat menerima representasi string dari tanggal sebagai argumen. String ini dapat memiliki beberapa bentuk yang berbeda. Formulir yang paling andal sesuai dengan spesifikasi RFC 2822 atau spesifikasi ISO 8601. Formatnya adalah:
-
RFC 2822 —
'MMM DD, YYYY'
atau'DD MMM, YYYY'
(Contoh:new Date('Jan 1, 2015')
ataunew Date('1 Jan, 2015')
) -
ISO 8601 —
'YYYY-MM-DD'
(Contoh:new Date('2015-01-01')
)
Peringatan: Representasi string pada konstruktor Tanggal dapat diuraikan secara berbeda oleh browser dan versi browser yang berbeda, sehingga menampilkan tanggal yang berbeda untuk string yang sama. Oleh karena itu, tidak disarankan untuk meneruskan string ke konstruktor Tanggal. Sebagai gantinya, sebaiknya hanya gunakan angka untuk argumen konstruktor Tanggal.
Linimasa di bawah ini menampilkan juara Super Bowl di setiap musim NFL sejak tahun 2000.
Di bawah ini adalah kode untuk membuat linimasa ini. Perhatikan penggunaan konstruktor new Date()
, dan angka yang diberikan untuk setiap tanggal, menggunakan bulan berbasis 0 seperti yang disebutkan sebelumnya.
google.charts.load('current', {'packages':['timeline']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Team'); data.addColumn('date', 'Season Start Date'); data.addColumn('date', 'Season End Date'); data.addRows([ ['Baltimore Ravens', new Date(2000, 8, 5), new Date(2001, 1, 5)], ['New England Patriots', new Date(2001, 8, 5), new Date(2002, 1, 5)], ['Tampa Bay Buccaneers', new Date(2002, 8, 5), new Date(2003, 1, 5)], ['New England Patriots', new Date(2003, 8, 5), new Date(2004, 1, 5)], ['New England Patriots', new Date(2004, 8, 5), new Date(2005, 1, 5)], ['Pittsburgh Steelers', new Date(2005, 8, 5), new Date(2006, 1, 5)], ['Indianapolis Colts', new Date(2006, 8, 5), new Date(2007, 1, 5)], ['New York Giants', new Date(2007, 8, 5), new Date(2008, 1, 5)], ['Pittsburgh Steelers', new Date(2008, 8, 5), new Date(2009, 1, 5)], ['New Orleans Saints', new Date(2009, 8, 5), new Date(2010, 1, 5)], ['Green Bay Packers', new Date(2010, 8, 5), new Date(2011, 1, 5)], ['New York Giants', new Date(2011, 8, 5), new Date(2012, 1, 5)], ['Baltimore Ravens', new Date(2012, 8, 5), new Date(2013, 1, 5)], ['Seattle Seahawks', new Date(2013, 8, 5), new Date(2014, 1, 5)], ]); var options = { height: 450, timeline: { groupByRowLabel: true } }; var chart = new google.visualization.Timeline(document.getElementById('chart_div')); chart.draw(data, options); }
Datetime Menggunakan Konstruktor Tanggal
Jenis data kolom datetime
DataTable menggunakan konstruktor Tanggal yang sama seperti
jenis data date
, tetapi sekarang menggunakan semua argumen untuk mengisi waktu.
Atau, representasi string dari datetime
juga dapat diteruskan ke
konstruktor Tanggal. Representasi string datetime
terdiri dari penambahan jam, menit, dan detik, selain offset zona waktu 4 digit (misalnya Waktu Standar Pasifik (PST) adalah -0800). Untuk spesifikasi RFC 2822, waktu dan zona waktu ditambahkan dengan spasi
di antara tanggal dan waktu, serta waktu dan zona waktu. Dalam spesifikasi ISO 8601, tidak ada spasi. Sebagai gantinya, tanggal diikuti dengan huruf "T" besar untuk menunjukkan komponen waktu. Selain itu,
tidak ada spasi di antara waktu dan selisih zona waktu. String tanggal datetime
lengkap untuk 6 Desember 2014 pukul 10.30 PST adalah:
- RFC 2822 —
Dec 6, 2014 10:30:00 -0800
. - ISO 8601 —
2014-12-06T10:30:00-0800
.
Peringatan: Sekali lagi, representasi string dapat diuraikan secara berbeda oleh browser/versi yang berbeda. Secara khusus, saat menangani waktu dan zona waktu, ada perbedaan apakah tanggal dan waktu ditampilkan dengan zona waktu UTC (GMT), atau di-offset dan ditampilkan dalam waktu lokal. Ini adalah alasan lain mengapa penggunaan string datetime tidak direkomendasikan.
Linimasa di bawah ini memperinci rata-rata hari, menggunakan jenis data datetime.
google.charts.load('current', {'packages':['timeline']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Activity', 'Start Time', 'End Time'], ['Sleep', new Date(2014, 10, 15, 0, 30), new Date(2014, 10, 15, 6, 30)], ['Eat Breakfast', new Date(2014, 10, 15, 6, 45), new Date(2014, 10, 15, 7)], ['Get Ready', new Date(2014, 10, 15, 7, 4), new Date(2014, 10, 15, 7, 30)], ['Commute To Work', new Date(2014, 10, 15, 7, 30), new Date(2014, 10, 15, 8, 30)], ['Work', new Date(2014, 10, 15, 8, 30), new Date(2014, 10, 15, 17)], ['Commute Home', new Date(2014, 10, 15, 17), new Date(2014, 10, 15, 18)], ['Gym', new Date(2014, 10, 15, 18), new Date(2014, 10, 15, 18, 45)], ['Eat Dinner', new Date(2014, 10, 15, 19), new Date(2014, 10, 15, 20)], ['Get Ready For Bed', new Date(2014, 10, 15, 21), new Date(2014, 10, 15, 22)] ]); var options = { height: 450, }; var chart = new google.visualization.Timeline(document.getElementById('chart_div')); chart.draw(data, options); }
Tanggal, Waktu, dan Zona Waktu
Penggunaan konstruktor Tanggal, baik untuk date
maupun datetime
, akan menampilkan
tanggal atau tanggal dan waktu yang diinginkan dalam zona waktu yang disetel oleh browser pengguna.
Menetapkan objek Date ke zona waktu tertentu dapat dilakukan dengan
beberapa cara. Pertama, Google Chart menyediakan
Formatter Tanggal tempat Anda dapat
menentukan timeZone
. Ini akan memberikan nilai terformat untuk setiap nilai date
dan datetime
di DataTable Anda. Anda juga dapat meneruskan string sebagai argumen ke konstruktor new Date()
, atau menggabungkan argumen dalam metode Date.UTC()
, seperti:
new Date(Date.UTC(Year, Month, Day, Hours, Minutes, Seconds, Milliseconds))
Tindakan ini akan menetapkan objek Tanggal ke tanggal dan waktu yang ditentukan dalam zona waktu UTC (GMT). Dari sana, Anda dapat menghitung offset yang diinginkan untuk zona waktu serta menetapkan tanggal dan waktu sesuai keinginan.
Tanggal dan Waktu Menggunakan Representasi String Tanggal
Saat membuat serialisasi data menggunakan
notasi literal objek DataTable
JavaScript untuk membuat DataTable, konstruktor new Date()
tidak dapat digunakan. Sebagai gantinya,
Google Chart memberikan representasi string Tanggal yang memungkinkan date
atau
datetime
Anda diserialisasi dan diurai dengan benar saat membuat DataTable. Format string
Tanggal ini hanya meletakkan kata kunci new
dan menggabungkan ekspresi yang tersisa dalam
tanda kutip:
"Date(Year, Month, Day, Hours, Minutes, Seconds, Milliseconds)"
Penting: Saat menggunakan Representasi String Tanggal ini, seperti saat menggunakan konstruktor new Date()
, bulan diindeks mulai dari nol (Januari adalah bulan 0, Desember adalah bulan 11).
Di bawah ini adalah linimasa Super Bowl yang sama dengan sebelumnya, tetapi sekarang menggunakan notasi literal objek JavaScript dan format string Tanggal.
google.charts.load('current', {'packages':['timeline']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable({ cols: [ {id: 'team', label: 'Team', type: 'string'}, {id: 'start', label: 'Season Start Date', type: 'date'}, {id: 'end', label: 'Season End Date', type: 'date'} ], rows: [ {c: [{v: 'Baltimore Ravens'}, {v: 'Date(2000, 8, 5)'}, {v: 'Date(2001, 1, 5)'}]}, {c: [{v: 'New England Patriots'}, {v: 'Date(2001, 8, 5)'}, {v: 'Date(2002, 1, 5)'}]}, {c: [{v: 'Tampa Bay Buccaneers'}, {v: 'Date(2002, 8, 5)'}, {v: 'Date(2003, 1, 5)'}]}, {c: [{v: 'New England Patriots'}, {v: 'Date(2003, 8, 5)'}, {v: 'Date(2004, 1, 5)'}]}, {c: [{v: 'New England Patriots'}, {v: 'Date(2004, 8, 5)'}, {v: 'Date(2005, 1, 5)'}]}, {c: [{v: 'Pittsburgh Steelers'}, {v: 'Date(2005, 8, 5)'}, {v: 'Date(2006, 1, 5)'}]}, {c: [{v: 'Indianapolis Colts'}, {v: 'Date(2006, 8, 5)'}, {v: 'Date(2007, 1, 5)'}]}, {c: [{v: 'New York Giants'}, {v: 'Date(2007, 8, 5)'}, {v: 'Date(2008, 1, 5)'}]}, {c: [{v: 'Pittsburgh Steelers'}, {v: 'Date(2008, 8, 5)'}, {v: 'Date(2009, 1, 5)'}]}, {c: [{v: 'New Orleans Saints'}, {v: 'Date(2009, 8, 5)'}, {v: 'Date(2010, 1, 5)'}]}, {c: [{v: 'Green Bay Packers'}, {v: 'Date(2010, 8, 5)'}, {v: 'Date(2011, 1, 5)'}]}, {c: [{v: 'New York Giants'}, {v: 'Date(2011, 8, 5)'}, {v: 'Date(2012, 1, 5)'}]}, {c: [{v: 'Baltimore Ravens'}, {v: 'Date(2012, 8, 5)'}, {v: 'Date(2013, 1, 5)'}]}, {c: [{v: 'Seattle Seahawks'}, {v: 'Date(2013, 8, 5)'}, {v: 'Date(2014, 1, 5)'}]} ] }); var options = { height: 450, timeline: { groupByRowLabel: true } }; var chart = new google.visualization.Timeline(document.getElementById('chart_div')); chart.draw(data, options); }
Format ini juga dapat digunakan dalam metode arrayToDataTable()
, asalkan dalam
array pertama, tempat label kolom ditentukan, Anda mendeklarasikan kolom yang diperlukan sebagai
type: 'date'
atau type: 'datetime'
.
var data = google.visualization.arrayToDataTable([ ["Team", {type: 'date', label: 'Season Start Date'}, {type: 'date', label: 'Season End Date'}], ["Baltimore Ravens", "Date(2000, 8, 5)", "Date(2001, 1, 5)"], ["New England Patriots", "Date(2001, 8, 5)", "Date(2002, 1, 5)"], ["Tampa Bay Buccaneers", "Date(2002, 8, 5)", "Date(2003, 1, 5)"], ["New England Patriots", "Date(2003, 8, 5)", "Date(2004, 1, 5)"], ["New England Patriots", "Date(2004, 8, 5)", "Date(2005, 1, 5)"], ["Pittsburgh Steelers", "Date(2005, 8, 5)", "Date(2006, 1, 5)"], ["Indianapolis Colts", "Date(2006, 8, 5)", "Date(2007, 1, 5)"], ["New York Giants", "Date(2007, 8, 5)", "Date(2008, 1, 5)"], ["Pittsburgh Steelers", "Date(2008, 8, 5)", "Date(2009, 1, 5)"], ["New Orleans Saints", "Date(2009, 8, 5)", "Date(2010, 1, 5)"], ["Green Bay Packers", "Date(2010, 8, 5)", "Date(2011, 1, 5)"], ["New York Giants", "Date(2011, 8, 5)", "Date(2012, 1, 5)"], ["Baltimore Ravens", "Date(2012, 8, 5)", "Date(2013, 1, 5)"], ["Seattle Seahawks", "Date(2013, 8, 5)", "Date(2014, 1, 5)"] ]);
Menggunakan Waktu
Jenis data kolom timeofday
DataTable menggunakan array 3 atau 4 angka, yang masing-masing mewakili jam, menit, detik, dan milidetik secara opsional. Penggunaan
timeofday
berbeda dengan menggunakan date
dan datetime
karena
nilai tidak spesifik untuk suatu tanggal, sedangkan date
dan datetime
selalu menentukan tanggal.
Misalnya, waktu pada pukul 08.30 akan menjadi: [8, 30, 0, 0]
, dengan nilai ke-4 bersifat opsional ([8, 30, 0]
akan menghasilkan nilai waktu yang sama).
google.charts.load('current', {'packages':['bar']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('timeofday', 'Time of Day'); data.addColumn('number', 'Emails Received'); data.addRows([ [[8, 30, 45], 5], [[9, 0, 0], 10], [[10, 0, 0, 0], 12], [[10, 45, 0, 0], 13], [[11, 0, 0, 0], 15], [[12, 15, 45, 0], 20], [[13, 0, 0, 0], 22], [[14, 30, 0, 0], 25], [[15, 12, 0, 0], 30], [[16, 45, 0], 32], [[16, 59, 0], 42] ]); var options = { title: 'Total Emails Received Throughout the Day', height: 450 }; var chart = new google.charts.Bar(document.getElementById('chart_div')); chart.draw(data, google.charts.Bar.convertOptions(options)); }
Memformat Label Sumbu, Garis Petak, dan Centang
Saat menggunakan tanggal, tanggal, dan waktu, sebaiknya format label sumbu, label garis petak, atau label tick dengan cara tertentu. Hal ini dapat dicapai dengan beberapa cara.
Pertama, Anda dapat menggunakan opsi hAxis.format
atau vAxis.format
. Opsi ini berlaku jika opsi gridlines.count
dihilangkan, yang dalam hal ini diagram secara default ditetapkan ke jumlah 5, serta jika opsi ditetapkan ke angka selain -1. Tindakan ini memungkinkan Anda menentukan string format, tempat Anda menggunakan huruf placeholder untuk berbagai bagian tanggal/datetime/waktu. Lihat referensi
pemformat tanggal,
khususnya bagian pattern
untuk informasi selengkapnya tentang placeholder dan
cara kerjanya.
google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('date', 'Time of Day'); data.addColumn('number', 'Rating'); data.addRows([ [new Date(2015, 0, 1), 5], [new Date(2015, 0, 2), 7], [new Date(2015, 0, 3), 3], [new Date(2015, 0, 4), 1], [new Date(2015, 0, 5), 3], [new Date(2015, 0, 6), 4], [new Date(2015, 0, 7), 3], [new Date(2015, 0, 8), 4], [new Date(2015, 0, 9), 2], [new Date(2015, 0, 10), 5], [new Date(2015, 0, 11), 8], [new Date(2015, 0, 12), 6], [new Date(2015, 0, 13), 3], [new Date(2015, 0, 14), 3], [new Date(2015, 0, 15), 5], [new Date(2015, 0, 16), 7], [new Date(2015, 0, 17), 6], [new Date(2015, 0, 18), 6], [new Date(2015, 0, 19), 3], [new Date(2015, 0, 20), 1], [new Date(2015, 0, 21), 2], [new Date(2015, 0, 22), 4], [new Date(2015, 0, 23), 6], [new Date(2015, 0, 24), 5], [new Date(2015, 0, 25), 9], [new Date(2015, 0, 26), 4], [new Date(2015, 0, 27), 9], [new Date(2015, 0, 28), 8], [new Date(2015, 0, 29), 6], [new Date(2015, 0, 30), 4], [new Date(2015, 0, 31), 6], [new Date(2015, 1, 1), 7], [new Date(2015, 1, 2), 9] ]); var options = { title: 'Rate the Day on a Scale of 1 to 10', width: 900, height: 500, hAxis: { format: 'M/d/yy', gridlines: {count: 15} }, vAxis: { gridlines: {color: 'none'}, minValue: 0 } }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); var button = document.getElementById('change'); button.onclick = function () { // If the format option matches, change it to the new option, // if not, reset it to the original format. options.hAxis.format === 'M/d/yy' ? options.hAxis.format = 'MMM dd, yyyy' : options.hAxis.format = 'M/d/yy'; chart.draw(data, options); }; }
Anda juga dapat memberikan aturan pemformatan untuk unit nilai tanggal dan waktu tertentu dengan menyertakan opsi units
di bagian gridlines
dan minorGridlines
untuk kedua sumbu. Opsi ini hanya akan digunakan jika opsi gridlines.count
ditetapkan ke -1.
Opsi gridlines.units
adalah objek, tempat Anda menentukan format untuk berbagai aspek tanggal/tanggal/waktu/waktu untuk garis petak yang dihitung, dan diagram Anda akan menghitung garis petak berdasarkan format pertama yang sesuai dengan ruang untuk label garis petak.
Anda dapat menyetel format untuk tahun, bulan, hari, jam, menit, detik, dan milidetik.
Opsi format menerima array format string, dan akan menggunakannya secara berurutan hingga format sesuai dengan area label. Oleh karena itu, sebaiknya daftar format secara berurutan dari yang terpanjang hingga terpendek. Format string menggunakan pola yang sama dengan referensi pemformat tanggal yang disebutkan sebelumnya.
Perhatikan bahwa pada diagram di atas, saat mengubah jendela tampilan, format untuk
unit hours
akan berubah, mengingat jam berubah dari garis petak minor ke utama,
dan format dalam opsi akan berubah sesuai dengannya. Selain itu, perhatikan bahwa minorGridline menggunakan
format kedua yang lebih pendek, karena format pertama tidak sesuai dengan ruang dalam setiap instance.
hAxis: { viewWindow: { min: new Date(2014, 11, 31, 18), max: new Date(2015, 0, 3, 1) }, gridlines: { count: -1, units: { days: {format: ['MMM dd']}, hours: {format: ['HH:mm', 'ha']}, } }, minorGridlines: { units: { hours: {format: ['hh:mm:ss a', 'ha']}, minutes: {format: ['HH:mm a Z', ':mm']} } } }
Informasi Selengkapnya tentang Tanggal JavaScript
Jika Anda ingin mempelajari objek Date()
JavaScript lebih lanjut, Mozilla
Developer Network adalah referensi yang bagus. Di sana, Anda dapat mempelajari semua hal tentang
objek Tanggal JavaScript.