vakit
v1.0.0
Published
Türkçe tarih ve zaman yardımcıları: gün/ay adları, biçimlendirme, göreli zaman ve tarih hesaplamaları. Bağımlılıksız, ESM + CJS, tam tip destekli.
Maintainers
Readme
vakit
Türkçe tarih ve zaman yardımcıları. Gün/ay adları, biçimlendirme, göreli zaman ("3 saat önce") ve tarih hesaplamaları için sıfır bağımlılıklı, tam tip destekli küçük bir kütüphane.
📖 Dokümantasyon: https://emrekayik.github.io/vakit/
- Bağımlılık yok — sadece yerleşik
Date. - ESM + CommonJS —
importverequirebirlikte desteklenir. - TypeScript — tipler pakete dahil.
- Saf fonksiyonlar — girdi tarihleri asla değiştirilmez.
- Test edilmiş — %90+ kapsam eşiği CI'da zorunlu.
Kurulum
npm install vakitHızlı başlangıç
import { bicimle, gorece, gunAdi, ekle } from 'vakit';
gunAdi(); // 'Cumartesi'
bicimle(new Date(), 'DD MMMM YYYY, DDDD'); // '09 Mart 2024, Cumartesi'
gorece(Date.now() - 3600_000); // '1 saat önce'
ekle(new Date(), 3, 'gun'); // 3 gün sonrası (yeni Date)CommonJS:
const { gunAdi } = require('vakit');Tüm fonksiyonlar tarih girdisi olarak Date, zaman damgası (ms) veya
ayrıştırılabilir bir metin kabul eder. Girdi verilmezse şu an kullanılır.
Geçersiz tarihlerde TypeError fırlatılır.
API
Takvim bilgileri
| Fonksiyon | Açıklama | Örnek |
| --------------------- | -------------------------------------------- | ------------- |
| gunAdi(t?) | Günün Türkçe adı | 'Cumartesi' |
| gunAdiKisa(t?) | Kısaltılmış gün adı | 'Cmt' |
| ayAdi(t?) | Ayın Türkçe adı | 'Mart' |
| ayAdiKisa(t?) | Kısaltılmış ay adı | 'Mar' |
| haftaninGunu(t?) | Haftanın günü, Pazar = 0 | 6 |
| haftaninGunuTR(t?) | Haftanın günü, Pazartesi = 1 … Pazar = 7 | 6 |
| ayinKaci(t?) | Ayın kaçıncı günü | 9 |
| ayNo(t?) | Ay numarası (1-12) | 3 |
| yil(t?) | Dört haneli yıl | 2024 |
| ceyrek(t?) | Yılın çeyreği (1-4) | 1 |
| haftaNo(t?) | ISO 8601 hafta numarası | 10 |
| yilinGunu(t?) | Yılın kaçıncı günü (1-366) | 69 |
| ayinGunSayisi(t?) | Ayın çektiği gün sayısı | 31 |
| artikYilMi(t? \| y) | Artık yıl mı (tarih ya da doğrudan yıl alır) | true |
| haftaSonuMu(t?) | Cumartesi/Pazar mı | true |
| haftaIciMi(t?) | Hafta içi mi | false |
Biçimlendirme
bicimle(new Date(2024, 2, 9, 14, 5), 'DD MMMM YYYY, DDDD HH:mm');
// '09 Mart 2024, Cumartesi 14:05'| Fonksiyon | Açıklama | Örnek |
| --------------------- | ------------------------------- | ------------------------- |
| bicimle(t?, kalip?) | Kalıba göre biçimlendirir | '09.03.2024 14:05' |
| tarihMetni(t?) | GG.AA.YYYY | '09.03.2024' |
| saat(t?, saniyeli?) | SS:DD (veya SS:DD:ss) | '14:05' |
| uzunTarih(t?) | Uzun Türkçe tarih | '9 Mart 2024 Cumartesi' |
| isoGun(t?) | Yerel saatte YYYY-AA-GG | '2024-03-09' |
| gorece(t, olcum?) | Göreli zaman metni | '3 saat önce' |
| sure(ms) | Süreyi okunabilir metne çevirir | '2 saat 5 dakika' |
Biçim jetonları
| Jeton | Anlam | Örnek |
| ------- | ------------------- | ----------- |
| YYYY | Yıl (4 hane) | 2024 |
| YY | Yıl (2 hane) | 24 |
| MMMM | Ay adı | Mart |
| MMM | Kısa ay adı | Mar |
| MM | Ay (2 hane) | 03 |
| M | Ay | 3 |
| DDDD | Gün adı | Cumartesi |
| DDD | Kısa gün adı | Cmt |
| DD | Gün (2 hane) | 09 |
| D | Gün | 9 |
| DDDDD | Yılın günü | 69 |
| HH | Saat (2 hane, 0-23) | 14 |
| H | Saat | 14 |
| mm | Dakika (2 hane) | 05 |
| m | Dakika | 5 |
| ss | Saniye (2 hane) | 03 |
| s | Saniye | 3 |
| SSS | Milisaniye (3 hane) | 042 |
| W | ISO hafta numarası | 10 |
| Q | Çeyrek | 1 |
Köşeli parantez içindeki metin olduğu gibi bırakılır: bicimle(t, '[Bugün] DDDD')
→ 'Bugün Cumartesi'.
Hesaplama ve karşılaştırma
| Fonksiyon | Açıklama |
| --------------------------------------- | ------------------------------------------ |
| ekle(t, miktar, birim) | Zaman ekler, yeni Date döndürür |
| cikar(t, miktar, birim) | Zaman çıkarır |
| fark(a, b?) | a - b farkı (ms) |
| gunFarki(a, b?) | Tam gün farkı (saat bilgisi yok sayılır) |
| ayniGunMu(a, b) | Aynı güne mi denk geliyor |
| bugunMu(t?) dunMu(t?) yarinMu(t?) | Gün kontrolleri |
| gecmisMi(t?) gelecekMi(t?) | Geçmiş/gelecek kontrolü |
| arasindaMi(t, bas, bit) | Aralıkta mı (sınırlar dahil, sıra önemsiz) |
| yas(dogum, olcum?) | Tamamlanmış yaş |
| gunBasi(t?) gunSonu(t?) | Günün 00:00:00.000 / 23:59:59.999 anı |
| tarihe(t?) | Girdiyi doğrulayıp Datee çevirir |
Birimler: 'saniye' | 'dakika' | 'saat' | 'gun' | 'hafta' | 'ay' | 'yil'.
Ay eklemesi ay sonu taşmasını önler:
ekle('2024-01-31', 1, 'ay'); // 29 Şubat 2024 (1 Mart değil)Sabitler
import { GUNLER, GUNLER_KISA, AYLAR, AYLAR_KISA, MS } from 'vakit';
GUNLER; // ['Pazar', 'Pazartesi', ...] — Date#getDay sırasıyla
AYLAR; // ['Ocak', 'Şubat', ...]
MS.gun; // 86400000vakit kısayol nesnesi
Eski sürümlerle uyumluluk için korunur. v0.x'ten farklı olarak değerler modül yüklenirken değil, çağrı anında hesaplanır.
import { vakit } from 'vakit';
vakit.bugun(); // 'Cumartesi'
vakit.bugunR(); // 6
vakit.ayinKaci(); // 9
vakit.buay(); // 'Mart'
vakit.buyil(); // 2024v0.x'ten geçiş
| v0.x | v1.x |
| ---------------------------------------------------- | ----------------------------------- |
| Tarih modül yüklenirken sabitleniyordu | Her çağrıda güncel tarih kullanılır |
| buay() ayları bir kaydırıyordu (Ocak yerine Şubat) | Ay adları doğru döner |
| Pazar için undefined dönüyordu | Tüm günler doğru döner |
| Modül yüklenince console.log çalışıyordu | Yan etki yok |
| Sadece CommonJS | ESM + CJS + TypeScript tipleri |
vakit.* çağrıları aynı şekilde çalışmaya devam eder.
Geliştirme
npm install
npm test # vitest
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm run build # tsup (dist/)
npm run docs # docs sitesini üretir (site/)Sürüm yayınlamak için: package.json içindeki sürümü yükseltin, vX.Y.Z
biçiminde bir etiket atın ve GitHub'da bir release yayımlayın —
.github/workflows/publish.yml paketi npm'e provenance ile yükler.
Lisans
MIT © emrekayik
