Monday, May 30, 2016

Menghitung Hari Bersama Date Number

Mukadimah

Mungkin ini bukanlah hal baru bagi Anda yang sudah terbiasa bekerja dalam Excel, seperti tampak pada gambar di samping. Masalahnya, dalam tulisan ini, kita akan melakukan perhitungan tentang jarak (rentang waktu) antara dua tanggal (hari) dalam $\small\LaTeX$ yang hasilnya termuat sebaris (inline) dengan teks pada naskah/dokumen yang kita tulis.

Dalam hal ini kita bekerja dalam selingkung (template). Yang pertama saya pinjam dari Steven B. Segletes, seorang ahli di forum, yang menunjukkan cara berhitung rentang waktu antara dua tanggal, dalam hitungan hari, jam, dan menit. Yang kedua saya pinjam dari Martin Scharrer, seorang ahli di forum, yang menunjukkan cara berhitung rentang waktu antara suatu tanggal hingga hari ini, dalam hitungan tahun dan bulan.

Kedua selingkung itu sama-sama menggunakan paket utama datenumber, hanya saja untuk yang kedua memerlukan tambahan paket calc.

Perhitungan Rentang Waktu (Hari, Jam, Menit) di Antara Dua Tanggal

Berapa hari, berapa jam, berapa menitkah rentang waktu antara tanggal 12 Oktober 2015 pkl. 11.30 am hingga tanggal 2 Mei 2016 pkl. 1.20 pm?
Untuk menghitungnya kita memerlukan penetapan beberapa perintah baru sebagai berikut.
\gdef\mornaft{}

\def\xfoo#1:#2 #3m#4\relax{(#1)*60+#2\if p#3+720\fi\ifnum#1=12-720\fi}

\newcommand\ampm[1][T]{%
\if T#1%
 \def\numfoo##1##2{%
  \the\numexpr(\expandafter\xfoo##2\mornaft\relax)-%
    (\expandafter\xfoo##1\mornaft\relax)\relax}%
\else%
 \def\numfoo##1##2{%
  \the\numexpr(\expandafter\xfoo##2 am\relax)-%
    (\expandafter\xfoo##1 am\relax)\relax}%
\fi
}
\ampm

\def\barr#1#2{%
  \edef\tmp{\the\numexpr((\numfoo{#1}{#2})-(30))/60\relax}%
  \ifnum\tmp<0 addtocounter="" barm="" barr="" d="" dan="" datenumber="" edef="" else="" fi="" hari="" if="" ifnum="" jam="" m="" menit="" mydays="" mystartdate="" newcommand="" newcounter="" numexpr="" numfoo="" relax="" setcounter="" setdatenumber="" span="" the="" themydays="" timediff="" tmp="" value="">
Kemudian dalam penggunaannya kita tuliskan
\timediff
{2015}{10}{12}{11:30 am}
{2016}{5}{2}{01:20 pm}
Misalnya, di dalam teks kita tulis
Rentang waktu antara tanggal 12 Oktober 2015 pkl. 11.30 am hingga tanggal 2 Mei 2016 pkl. 1.20 pm adalah \textbf{
\timediff
{2015}{10}{12}{11:30 am}
{2016}{5}{2}{01:20 pm}
}.
maka akan menghasilkan 
Rentang waktu antara tanggal 12 Oktober 2015 pkl. 11.30 am hingga tanggal 2Mei 2016 pkl. 1.20 pm adalah 203 hari, 1 jam, dan 50 menit.

Perhitungan Rentang Waktu (Tahun, Bulan) di Antara Suatu Tanggal Hingga Hari ini.

Bila Anda mulai bekerja selaku Pegawai Negeri Sipil (PNS) pada 5 Maret 1992, berapa lamakah masa kerja Anda hingga saat ini?
Dengan menambahkan paket calc, kita memerlukan penetapan perintah baru sebagai berikut.
\newcounter{datetoday}
\newcounter{diffyears}
\newcounter{diffmonths}
\newcounter{diffdays}

\newcommand{\difftoday}[3]{%
      \setmydatenumber{datetoday}{\the\year}{\the\month}{\the\day}%
      \setmydatenumber{diffdays}{#1}{#2}{#3}%
      \addtocounter{diffdays}{-\thedatetoday}%
      \ifnum\value{diffdays}>0
        \def\diffbefore{in }%
        \def\diffafter{}%
      \else
        \def\diffbefore{}%
        \def\diffafter{}%
        \setcounter{diffdays}{-\value{diffdays}}%
      \fi
      \setcounter{diffyears}{\value{diffdays}/365}%
      \setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}%
      \setcounter{diffmonths}{\value{diffdays}/30}%
      \setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}%
      %
      \diffbefore
      \ifnum\value{diffyears}=0
      \else
        \ifnum\value{diffyears}>1
            \thediffyears\space tahun,
        \else
            \thediffyears\space tahun,
        \fi
      \fi
      \ifnum\value{diffmonths}=0
      \else
        \ifnum\value{diffmonths}>1
            \thediffmonths\space bulan
        \else
            \thediffmonths\space bulan
        \fi
      \fi
      \diffafter
}
Kemudian dalam penggunaannya kita tuliskan
\difftoday{1992}{03}{05}
Misalnya, di dalam teks kita tulis
Saya telah bekerja selaku PNS sejak 5 Maret 1992, maka masa kerja saya hingga saat ini adalah \textbf{
\difftoday{1992}{03}{05}
}
maka akan menghasilkan
Saya telah bekerja selaku PNS sejak 5 Maret 1992, maka masa kerja saya hingga saat ini adalah 24 tahun, 3 bulan.

Penutup

Kita hanya perlu mencatumkan paket dan perintah tersebut, sesuai dengan perhitungan yang diinginkan, di dalam mukadimah (preamble) dari dokumen yang kita buat. Hal-hal lainnya, seperti jenis huruf dll, mengikuti keperluan dari dokumen itu.

Demikian semoga bermanfaat.

Adjie Gumarang Pujakelana 2016

No comments:

Related Posts Plugin for WordPress, Blogger...