全部产品
Search
文档中心

Simple Log Service:Konversi datetime

更新时间:Jul 02, 2025

Anda dapat mengonversi waktu dan tanggal untuk meningkatkan efisiensi kueri log dan analisis. Topik ini menjelaskan cara mengonversi serta mengimbangi datetime menggunakan fungsi.

Istilah

Bahasa spesifik domain (DSL) mendukung tiga tipe data: string datetime, objek datetime, dan timestamp UNIX.

  • String datetime

    String datetime digunakan untuk mengonversi data waktu dan tanggal menjadi format yang dapat dibaca. String datetime terbagi dalam dua jenis dalam sintaks DSL:

    • String datetime dengan zona waktu, contohnya, 2019-06-02 18:41:26+08:00.

    • String datetime tanpa zona waktu, contohnya, 2019-06-02 10:41:26.

    Pada string datetime dengan zona waktu, selisih waktu ditambahkan ke datetime untuk menunjukkan zona waktu. Contoh:

    • 2019-06-02 18:41:26+08:00 menunjukkan bahwa datetime 2019-06-02 18:41:26 berada di zona waktu UTC+8.

    • 2019-06-02 18:41:26-07:00 menunjukkan bahwa datetime 2019-06-02 18:41:26 berada di zona waktu UTC-7.

  • Objek datetime

    Objek datetime diinstansiasi untuk menampilkan data dan waktu. Objek ini digunakan untuk mengonversi data waktu dan tanggal menjadi string yang dapat dibaca.

  • Timestamp UNIX

    Timestamp UNIX menunjukkan jumlah detik yang telah berlalu sejak pukul 00:00:00 Kamis, 1 Januari 1970. Timestamp UNIX dapat digunakan dalam skenario berikut:

    • Menampilkan waktu sistem.

      Dalam log peristiwa, bidang metadata __time__ menunjukkan waktu ketika log dihasilkan, dan bidang __receive_time__ menunjukkan waktu ketika Simple Log Service menerima log. Nilai dari bidang-bidang ini menggunakan timestamp UNIX untuk menunjukkan waktu sistem.

      __source__:  192.0.2.1
      __tag__:__receive_time__:  1562741899
      __topic__: 
      __time__: 1562731122
    • Melakukan perhitungan terkait waktu.

      Timestamp UNIX menunjukkan jumlah detik yang telah berlalu sejak pukul 00:00:00 Kamis, 1 Januari 1970. Anda dapat menggunakan timestamp UNIX untuk melakukan perhitungan terkait waktu dalam beberapa skenario. Contohnya:

      • Entri log mentah

        time1: 1562741899
        time2: 1562731122
      • Pengaturan DSL

        e_set("time_diff", op_sub(v("time1"), v("time2")))
      • Hasil

        time1: 1562741899
        time2: 1562731122
        time_diff: 10777

Gunakan fungsi untuk mengonversi tipe data

Gambar berikut menunjukkan cara menggunakan fungsi untuk mengonversi tiga tipe data: string datetime, objek datetime, dan timestamp UNIX.Convert data types Tabel berikut menjelaskan skenario konversi dan fungsi konversi.

Skenario konversi

Fungsi konversi

Lakukan konversi antara objek datetime dan timestamp UNIX.

Konversikan objek datetime menjadi timestamp UNIX.

  • dt_parsetimestamp: mengonversi objek datetime atau string datetime menjadi timestamp UNIX.

  • dt_totimestamp: mengonversi objek datetime menjadi timestamp UNIX.

Konversikan timestamp UNIX menjadi objek datetime.

  • dt_parse: mengonversi timestamp UNIX atau string datetime menjadi objek datetime.

  • dt_fromtimestamp: mengonversi timestamp UNIX menjadi objek datetime.

Lakukan konversi antara objek datetime dan string datetime.

Konversikan objek datetime menjadi string datetime.

  • dt_str: mengonversi objek datetime, timestamp UNIX, atau string datetime menjadi string datetime dalam format tertentu.

  • dt_strftime: mengonversi objek datetime menjadi string datetime.

Konversikan string datetime menjadi objek datetime.

  • dt_parse: mengonversi string datetime atau timestamp UNIX menjadi objek datetime.

  • dt_strptime: mengonversi string datetime menjadi objek datetime.

Lakukan konversi antara string datetime dan timestamp UNIX.

Konversikan string datetime menjadi timestamp UNIX.

dt_parsetimestamp: mengonversi string datetime atau objek datetime menjadi timestamp UNIX.

Konversikan timestamp UNIX menjadi string datetime.

  • dt_str: mengonversi timestamp UNIX, objek datetime, atau string datetime menjadi string datetime dalam format tertentu.

  • dt_strftimestamp: mengonversi timestamp UNIX menjadi string datetime.

Tiga skenario konversi dan enam fungsi konversi dijelaskan dalam tabel sebelumnya. Fungsi konversi ini dibagi menjadi dua jenis berikut:

  • Fungsi konversi otomatis

    Fungsi konversi otomatis seperti dt_parse secara otomatis mengonversi tipe data yang berbeda, seperti timestamp UNIX, objek datetime, dan string datetime.

  • Fungsi khusus

    Fungsi konversi otomatis tidak dapat memenuhi kebutuhan Anda dalam beberapa skenario. Misalnya, fungsi konversi otomatis seperti dt_parse tidak dapat mem-parsing tipe tanggal dalam beberapa format kustom. Dalam hal ini, Anda harus menggunakan fungsi dt_strptime.

Catatan

Untuk informasi lebih lanjut, lihat Fungsi tanggal dan waktu dan Fungsi konversi.

Lakukan konversi antara objek datetime dan timestamp UNIX

  • Fungsi konversi

    • dt_parsetimestamp: Direkomendasikan. Fungsi konversi otomatis ini mengonversi objek datetime atau string datetime menjadi timestamp UNIX.

    • e_set: Anda dapat mengatur parameter tz dalam fungsi ini untuk menambahkan zona waktu ke objek datetime. Anda juga dapat mengatur parameter tz untuk mengonversi zona waktu sumber ke zona waktu tujuan.

  • Konversikan timestamp UNIX menjadi string datetime dengan zona waktu.

    • Entri log mentah

      time: 1562741899
    • Pengaturan DSL

      e_set("new_time", dt_parse(v("time"), tz="Asia/Shanghai"))
    • Hasil

      time: 1562741899
      new_time: 2019-07-10 06:58:19+08:00

Lakukan konversi antara string datetime dan timestamp UNIX

  • Fungsi konversi

    • dt_str: mengonversi timestamp UNIX, objek datetime, atau string datetime menjadi string datetime dalam format tertentu.

    • dt_strftimestamp: mengonversi timestamp UNIX menjadi string datetime.

    • dt_parsetimestamp: mengonversi string datetime atau objek datetime menjadi timestamp UNIX.

  • Skenario 1: Konversikan string datetime tanpa zona waktu menjadi timestamp UNIX.

    Misalnya, untuk mengonversi 2019-06-02 18:41:26 menjadi timestamp UNIX, Anda harus menentukan zona waktu untuk string datetime. Timestamp UNIX yang dikonversi bervariasi sesuai dengan zona waktu.

    • Entri log mentah

      time: 2019-06-02 18:41:26
    • Pengaturan DSL

      e_set("Shanghai_timestamp", dt_parsetimestamp(v("time"), tz="Asia/Shanghai"))
      e_set("Los_Angeles_timestamp", dt_parsetimestamp(v("time"), tz="America/Los_Angeles"))
      e_set("UTC_timestamp", dt_parsetimestamp(v("time")))
    • Hasil

      Shanghai_timestamp: 1559472086
      Los_Angeles_timestamp: 1559526086
      UTC_timestamp: 1559500886
    Catatan
    • tz="Asia/Shanghai" menunjukkan bahwa waktu yang ditunjukkan oleh bidang time berada di zona waktu Shanghai.

    • Jika tidak ada zona waktu yang ditentukan, zona waktu UTC+0 digunakan sebagai zona waktu default.

    • Untuk informasi lebih lanjut tentang nilai parameter tz=time zone string, lihat Zona waktu.

  • Skenario 2: Konversikan string datetime dengan zona waktu menjadi timestamp UNIX.

    Anda tidak perlu menentukan parameter zona waktu jika string datetime berisi zona waktu, misalnya 2019-06-02 18:41:26+08:00.

    • Entri log mentah

      China_time : 2019-06-02 18:41:26+08:00
      America_time: 2019-06-02 3:41:26-07:00
      UTC_time : 2019-06-02 10:41:26+00:00                        
    • Pengaturan DSL

      e_set("timestamp1", dt_parsetimestamp(v("China_time")))
      e_set("timestamp2", dt_parsetimestamp(v("America_time")))
      e_set("timestamp3", dt_parsetimestamp(v("UTC_time")))
    • Hasil

      America_time:2019-06-02 3:41:26-07:00
      China_time:2019-06-02 18:41:26+08:00
      UTC_time:2019-06-02 10:41:26+00:00
      timestamp1: 1559472086
      timestamp2: 1559472086
      timestamp3: 1559472086
  • Skenario 3: Konversikan datetime kustom tanpa zona waktu menjadi timestamp UNIX.

    • Entri log mentah

      time1: 2019-07-10 06:58:19
      time2: 2019/07/10 06-58-19
    • Pengaturan DSL

      e_set("time3", dt_parsetimestamp(v("time1")))   
      e_set("time4", dt_parsetimestamp(dt_strptime(v("time2"), "%Y/%m/%d %H-%M-%S")))
    • Hasil

      time1: 2019-07-10 06:58:19
      time2: 2019/07/10 06-58-19
      time3: 1562741899
      time4: 1562741899

Lakukan konversi antara objek datetime dan string datetime.

  • Fungsi konversi

    • dt_parse: mengonversi string datetime atau timestamp UNIX menjadi objek datetime.

    • dt_astimezone: mengembalikan objek datetime yang berisi zona waktu.

  • Skenario 1: Konversikan string datetime tanpa zona waktu menjadi objek datetime dalam zona waktu tertentu.

    Misalnya, Anda dapat mengonversi string datetime 2019-06-02 18:41:26 menjadi timestamp UNIX dan kemudian mengonversi timestamp UNIX menjadi string datetime di zona waktu lain. Contoh berikut menunjukkan cara mengonversi datetime di zona waktu Los Angeles menjadi datetime di zona waktu Shanghai.

    • Entri log mentah

      # Asumsikan bahwa datetime di bidang time adalah zona waktu Los Angeles.
      time : 2019-06-04 2:41:26
    • Pengaturan DSL

      e_set("timestamp", dt_parsetimestamp(v("time"), tz="America/Los_Angeles"))
      e_set("Shanghai_time", dt_parse(v("timestamp"), tz="Asia/Shanghai"))
    • Hasil

      Shanghai_time : 2019-06-04 17:41:26+08:00
      time : 2019-06-04 2:41:26
      timestamp:1559641286
  • Skenario 2: Konversikan string datetime tanpa zona waktu menjadi objek datetime dengan zona waktu.

    • Entri log mentah

      time : 2019-07-10 06:58:19
    • Pengaturan DSL

      e_set("new_time", dt_parse(v("time"), tz="Asia/Shanghai"))
    • Hasil

      time: 2019-07-10 06:58:19
      new_time: 2019-07-10 06:58:19+08:00
  • Skenario 3: Konversikan string datetime dengan zona waktu menjadi objek datetime di zona waktu tujuan.

    • Entri log mentah

      time : 2019-06-04 2:41:26+08:00
    • Pengaturan DSL

      e_set("new_time", dt_astimezone(v("time"), tz="America/Los_Angeles"))
    • Hasil

      new_time : 2019-06-03 11:41:26-07:00
      time : 2019-06-04 2:41:26+08:00

Offset datetime

  • Fungsi konversi

    • Fungsi dt_add: Sintaks berikut menunjukkan parameter dari fungsi ini.

      dt_add (nama bidang, dt1 = None, dt2 = None, year (s) = None, month (s) = None, day (s) = None, hour (s) = None, minute (s) = None, second (s) = None, microsecond (s) = None, weeks (s) = None, weekday = None)

      Parameter yang diakhiri dengan (s), seperti year (s), month (s), dan day (s), memiliki dua pola. Misalnya, year (s) bisa menjadi year dan years, dan month (s) bisa menjadi month dan months. Ambil year dan years sebagai contoh. Jika year digunakan dalam sintaks, nilai year menggantikan nilai tahun dalam entri log mentah. Jika years digunakan dalam sintaks, nilai years ditambahkan ke nilai tahun dalam entri log mentah. Anda harus menggunakan fungsi dt_add pada saat yang sama. Fungsi ini memungkinkan Anda menambahkan nilai, mengurangi nilai, atau menimpa nilai datetime.

    • Parameter weekday dalam fungsi dt_add digunakan bersama dengan parameter dt_MO dan dt_TU untuk mengimbangi hari kerja tertentu. Untuk informasi lebih lanjut, lihat dt_MO.

  • Skenario 1: Offset datetime berdasarkan tahun dan bulan.

    Contoh berikut menunjukkan cara mengimbangi datetime berdasarkan tahun dan bulan.

    • Entri log mentah

      time1 : 2019-06-04 2:41:26
    • Pengaturan DSL 1

      e_set("time2", dt_add(v("time1"), year=2018))
    • Hasil 1

      time1 : 2019-06-04 2:41:26
      time2 : 2018-06-04 02:41:26
    • Pengaturan DSL 2

      e_set("time2", dt_add(v("time1"), years=2018))
    • Hasil 2

      time1 : 2019-06-04 2:41:26
      time2 : 4037-06-04 02:41:26
  • Skenario 2: Offset datetime berdasarkan minggu

    Contoh berikut menunjukkan cara mengimbangi datetime berdasarkan minggu.

    • Entri log mentah

      # 4 Juni 2019 adalah hari Selasa.
       time1 : 2019-06-04 2:41:26
    • Pengaturan DSL

      # Kembalikan datetime hari Senin setelah time1.
      e_set("nex_Monday", dt_add(v("time1"), weekday=dt_MO(1)))
      
      # Kembalikan datetime hari Selasa sebelum time1.
      e_set("previous_Tuesday", dt_add(v("time1"), weekday=dt_TU(op_neg(1))))
      
      # Kembalikan datetime hari Sabtu kedua setelah time1.
      e_set("nex_next_Saturday", dt_add(v("time1"), weekday=dt_SA(2)))
      
      # Kembalikan datetime hari Minggu kedua terakhir sebelum time1.
      e_set("previous_previous_Sunday", dt_add(v("time1"), weekday=dt_SU(op_neg(2))))
    • Hasil

      next_Monday : 2019-06-10 02:41:26
      next_next_Saturday : 2019-06-15 02:41:26
      previous_Tuesday : 2019-06-04 2:41:26
      previous_previous_Sunday : 2019-05-26 02:41:26
      time1 : 2019-06-04 2:41:26
    Catatan

    Jika time 1 adalah hari Selasa, hari Selasa terakhir dan hari Selasa berikutnya adalah hari-hari yang satu minggu sebelum atau sesudah time 1.