# ✨ usei18nDate

usei18nDate fonksiyonu bileşenlerde tarih işlemlerini kolayca yaptığımız bir fonksiyondur.

# 🏪 Kullanım

usei18nDate fonksiyonunun import edilmesi.

import { usei18nDate } from 'vue-composable-utils';
const { format, timeAgo, getDate, utc, timezone, difference } = usei18nDate('Type a here....');

# 🛠 Kurulum

# 🔑 1. Adım

src/dayjs.js

src klasörünün içine dayjs.js adında bir dosya açılır aşağıdaki kodları eklenir. Dayjs.js dosyasını src'ye eklememizin nedeni dayjs kütüphanesinin özelleştirilebilir olmasıdır.

# dayjs.js

import Vue from 'vue';
import dayjs from 'dayjs';
// Farklı dil seçeneklerinin eklenmesi için "dayjs/locale/{dil kodu}" şeklinde kullanılır.
// For the other language options, add "dayjs/locale/{langCode}"
import 'dayjs/locale/tr';
import 'dayjs/locale/ar';
import relativeTime from 'dayjs/plugin/relativeTime';
import localizedFormat from 'dayjs/plugin/localizedFormat';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';

dayjs.extend(relativeTime);
dayjs.extend(localizedFormat);
dayjs.extend(utc);
dayjs.extend(timezone);

Object.defineProperties(Vue.prototype, {
  $dayjs: {
    get() {
      return dayjs;
    },
  },
});

# 🔑 2. Adım

main.js dosyasının içerisine dayjs.js dosyasını import edilir.

# main.js

import Vue from 'vue';
import App from './App.vue';
import VueCompositionApi from '@vue/composition-api';
// "dayjs.js" import edilir
import './dayjs.js';

Vue.use(VueCompositionApi);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App),
}).$mount('#app');

# 🚀 Example.vue

Language: tr

Format: Çarşamba, 13 Ekim 2021 11:00

TimeAgo: 6 ay önce

GetDate: 13

Difference: 1226

Utc: Çarşamba, 13 Ekim 2021 11:00

Timezone: 13.10.2021 07:00

<template>
  <div>
    <p><b>Format: </b>{{ dateFormat }}</p>
    <p><b>TimeAgo: </b>{{ timeAgoFormat }}</p>
    <p><b>GetDate: </b>{{ getDateFormat }}</p>
    <p><b>Difference: </b>{{ differenceFormat }}</p>
    <p><b>Utc: </b>{{ utcFormat }}</p>
    <p><b>Timezone: </b>{{ timezoneFormat }}</p>
  </div>
</template>

<script>
import {ref, computed} from '@vue/composition-api'
import { usei18nDate } from "vue-composable-utils";

export default {
  name: "Example",
  setup() {
    const date = new Date();
    const langUnit = ref('tr')

    // usei18nDate fonksiyonu eklenir ve istenilen özellikleri kullanılır.
		// usei18nDate gönderilen parametre dil seçeneğini temsil eder.
    const { format, timeAgo, getDate, utc, timezone, difference } = usei18nDate(langUnit);

    const dateFormat = computed(() => format(date, 'LLLL'));
    const timeAgoFormat = computed(() => timeAgo(date, '2021-04-07:23:00'))
    const getDateFormat = computed(() => getDate('date'));
    const differenceFormat = computed(() => difference(date, '2018-06-05', 'day'));
    const utcFormat = computed(() => utc(date, 'LLLL'));
    const timezoneFormat = computed(() => timezone('2014-06-01 12:00', 'America/New_York', 'L LT'));


    return {
      dateFormat,
      timeAgoFormat,
      getDateFormat,
      differenceFormat,
      utcFormat,
      timezoneFormat,
      langUnit,
    };
  };
};
</script>

# 🌟 Özellikler

# format() Fonksiyonu

Gönderilen tarihi formatlamak için kullanılır. 2 tane parametre alır. Birinci parametre olarak formatlanmak istenilen tarih. İkinci parametre ise format biçimi verilir.

const dateFormat = format(date, 'dddd'); // Cuma, 9 Nisan 2021 21:14
const dateFormat = format(date, 'YYYY'); // 2021
const dateFormat = format(date, 'MMM'); // Jan-Dec
Format Output Description
YY 18 Two-digit year
YYYY 2018 Four-digit year
M 1-12 The month, beginning at 1
MM 01-12 The month, 2-digits
MMM Jan-Dec The abbreviated month name
MMMM January-December The full month name
D 1-31 The day of the month
DD 01-31 The day of the month, 2-digits
d 0-6 The day of the week, with Sunday as 0
dd Su-Sa The min name of the day of the week
ddd Sun-Sat The short name of the day of the week
dddd Sunday-Saturday The name of the day of the week
H 0-23 The hour
HH 00-23 The hour, 2-digits
h 1-12 The hour, 12-hour clock
hh 01-12 The hour, 12-hour clock, 2-digits
m 0-59 The minute
mm 00-59 The minute, 2-digits
s 0-59 The second
ss 00-59 The second, 2-digits
SSS 000-999 The millisecond, 3-digits
Z +05:00 The offset from UTC, ±HH:mm
ZZ +0500 The offset from UTC, ±HHmm
A AM PM
a am pm

Yerelleştirilmiş formatların listesi

Format İngilizce Yerel Ayarları Örnek Çıktı
LT h:mm A 8:02 PM
LTS h:mm:ss A 8:02:18 PM
L MM/DD/YYYY 08/16/2018
LL MMMM D, YYYY August 16, 2018
LLL MMMM D, YYYY h:mm A August 16, 2018 8:02 PM
LLLL dddd, MMMM D, YYYY h:mm A Thursday, August 16, 2018 8:02 PM
l M/D/YYYY 8/16/2018
ll MMM D, YYYY Aug 16, 2018
lll MMM D, YYYY h:mm A Aug 16, 2018 8:02 PM
llll ddd, MMM D, YYYY h:mm A Thu, Aug 16, 2018 8:02 PM

Örnek

const dateFormat = format(date, 'LLLL'); // Friday, April 9, 2021 9:23 PM
const dateFormat = format(date, 'llll'); // Fri, Apr 9, 2021 9:23 PM
const dateFormat = format(date, 'll'); // Apr 9, 2021

# getDate() Fonksiyonu

const getDateFormat = getDate('date'); // date => Ayın Tarihi
Birim Kısa gösterim Açıklama
date D Ayın Tarihi
day d Haftanın Günü (Pazar 0, Cumartesi 6)
month M Ay (Ocak 0, Aralık 11)
year y Yıl
hour h Saat
minute m Dakika
second s Saniye
milisecond ms Milisaniye

# difference() Fonksiyonu

Belirlenen zaman birimine göre iki tarih arasındaki farkı verir.

3 parametre alır.

1- Birinci Tarih

2- İkinci Tarih

3- İki tarih arasındaki zaman birimi

// İki tarih arasında kaç gün olduğunu bildirir.
const differenceFormat = difference(date1, date2, 'day');

// İki tarih arasında kaç ay olduğunu bildirir.
const differenceFormat = difference(date1, date2, 'mount');

# utc() Fonksiyonu

2 parametre alır. Birinci parametre gönderilen tarih. İkinci parametre tarih birimi.

const utcFormat = utc(date, 'llll');

# timezone() Fonksiyonu

3 tane parametre alır.

1- Tarih

2- Lokasyon Location

3- Biçimlendirilmek istenilen birim Format Unit

const timezoneFormat = timezone('2014-06-01 12:00', 'Europe/Istanbul', 'LLLL');