DDayThistle
Ruang kerja kode dengan AI

Pergeseran hari kerja dengan hari libur

Geser tanggal dari minus 366 hingga 366 hari kerja, lewati akhir pekan dan hingga 1000 hari libur.

● ● ●DayThistle●
Alur kerja · Pergeseran hari kerja dengan hari libur ×
from datetime import date, timedelta

def working_day_shift(start, days, holidays):
    if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
        raise ValueError("days.input")
    if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
        raise ValueError("days.holidays")
    remaining, step = abs(days), 1 if days >= 0 else -1
    for _ in range(7*(remaining+len(holidays))+7):
        if remaining == 0:
            return start
        try:
            start += timedelta(days=step)
        except OverflowError as error:
            raise ValueError("days.range") from error
        if start.weekday() < 5 and start not in holidays:
            remaining -= 1
    raise RuntimeError("days.steps")
✳Pergeseran hari kerja dengan hari libur
✓ PerubahanTinjau sebelum menerapkan ↗
Ilustrasi ruang kerja
Proyek
Uji nol, arah balik dan batas kalender, tolak tanggal tidak valid tanpa mengubah hari libur.
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Alur kerja

Pergeseran hari kerja dengan hari libur

Alur kerja ↗
Alur kerja
from datetime import date, timedelta

def working_day_shift(start, days, holidays):
    if type(start) is not date or type(days) is not int or not -366 <= days <= 366:
        raise ValueError("days.input")
    if type(holidays) is not set or len(holidays) > 1000 or any(type(d) is not date for d in holidays):
        raise ValueError("days.holidays")
    remaining, step = abs(days), 1 if days >= 0 else -1
    for _ in range(7*(remaining+len(holidays))+7):
        if remaining == 0:
            return start
        try:
            start += timedelta(days=step)
        except OverflowError as error:
            raise ValueError("days.range") from error
        if start.weekday() < 5 and start not in holidays:
            remaining -= 1
    raise RuntimeError("days.steps")
Ruang kerja kode dengan AI

Perjelas aturan penjadwalan sebelum menyunting kode tanggal

Kode penjadwalan sering mencampur kebijakan bisnis dengan aritmetika kalender biasa. DayThistle adalah ruang kerja pemrograman AI Windows tempat Anda dapat memisahkan pertanyaan itu saat meninjau proyek. Mulailah dari tanggal yang dihasilkan aplikasi, tanggal harapan, dan aturan di balik harapan itu. Minta model terhubung memeriksa kode relevan sebelum menyarankan koreksi.

Misalnya, Anda dapat meminta peninjauan fungsi bantu tenggat yang melewati akhir pekan dan himpunan hari libur yang disediakan. Jelaskan apakah hari awal dihitung, perilaku pergeseran negatif, dan pihak penyedia data libur. Mintalah usulan yang mempertahankan keputusan ini dalam pemanggil maupun fungsi bantu, bukan mengasumsikan satu definisi universal hari kerja.

Verifikasi usulan perubahan menggunakan kasus uji dari aturan tersebut. Sertakan lintasan akhir pekan, hari libur bersebelahan dengan akhir pekan, pergeseran nol, dan pergerakan mundur. Jalankan pengujian proyek dan periksa perilaku batas untuk tanggal yang tidak didukung. Tenggat yang tampak benar dalam satu contoh tidak membuktikan semua pemanggil memakai kebijakan sama.

DayThistle terhubung ke endpoint yang kompatibel dengan OpenAI atau endpoint Anthropic yang didukung. Anda dapat memilih model AI tanpa sensor yang ditawarkan layanan; alat dan konteks tersedia tetap bergantung pada server. Tuliskan kebijakan dalam tugas agar model membantu implementasi tanpa diam-diam menentukan cara organisasi menjadwalkan pekerjaan.

Pertanyaan di balik perubahan hari kerja

Apakah DayThistle menyediakan kalender hari libur?

Contoh tugas memakai data hari libur dari aplikasi Anda. Identifikasi sumber dan cakupan harapannya dalam permintaan. Jangan menganggap membuka ruang kerja menyediakan hari libur regional terkini atau menentukan peringatan yang memengaruhi tenggat.

Haruskah hari awal dihitung dalam pergeseran?

Nyatakan aturan itu secara eksplisit dan sertakan kasus uji dengan hari awal jatuh pada hari kerja. Kebijakan berbeda menghasilkan jawaban berbeda. Minta asisten mempertahankan konvensi pilihan dalam pergerakan maju maupun mundur.

Bagaimana membedakan data libur buruk dari cacat kode?

Simpan himpunan hari libur persis bersama kasus uji gagal dan periksa isinya sebelum mengubah perhitungan. Bandingkan hasil dengan kebijakan tertulis. Entri libur yang hilang dan kondisi pelewatan yang salah memerlukan koreksi berbeda.

Bagaimana jika perulangan usulan tidak memiliki kondisi penghentian jelas?

Tanyakan cara implementasi membatasi pergeseran yang didukung dan menangani kalender di luar rentang. Tinjau perilaku itu sebelum menerima. Jalankan pengujian batas bersama tanggal biasa agar perbaikan satu tenggat tidak memperkenalkan perhitungan tanpa batas.

Unduh untuk Windows ↗

DayThistle · Diperbarui 2026-10-25