İçerik

Parsing İşlemleri

Moment.js native Date.prototype nesnesinde değişiklikler yapmak yerine Date nesnesi için bir wrapper oluşturur. Bu wrapper nesnesini çağırmak için kabul edilen giriş türlerini kullanarak basitçe moment() demeniz yeterlidir.

Moment prototype'ı moment.fn ile çalışmaktadır. Eğer kendi fonksiyonlarınızı yazacaksanız bu tam da onları koymanız gereken yer. Örneğin;

moment.fn.mesajYaz = function() {
    console.log('Burada moment çalıştı')
    return this
}

moment().mesajYaz().format()

Tabii ki kendi fonksiyonlarınızı oluşturmanız yukarıdakinden farklı bir gereksinim sonucu ortaya çıkabilir.

Mevcut Zaman

moment();
// 2.14.0 sürümünden itibaren ileriye yönelik olarak aşağıdaki kullanımlar da desteklenmektedir.
moment([]);
moment({});

mevcut zamana dair bilgi almak için herhangi bir parametre olmadan moment() demeniz yeterlidir.

var mevcutZaman = moment();

BİLGİ

Bu aşamada dönen sonuç Object türünden olacağı için saf bir kullanıma uygun değildir.

String

Moment nesnesi string türünden bir parametre alarak oluşturulduğu zaman önce girilen değerin ISO 8601 formatlarından biriyle eşleşip eşleşmediğine bakar.

Ardından RFC 2822 Date Time formatı için kontrol eder. Eğer bilinen bir geçerli bir format yok ise new Date(string) kullanılır.

UYARI

Tarayıcıların stringleri ayrıştırma işlemleri tutarsızdır. Bunun nedeni hangi formatın desteklenmesi gerekeceğine dair herhangi bir spesifikasyonun bulunmayışıdır. Bazı tarayıcılarda çalışan format, bazılarında çalışmayabilir.

ISO 8601 formatı dışındaki değerler için ayrıca format() fonksiyonunu da kullanabilirsiniz.

Desteklenen ISO 8601 Stringleri

ISO 8601 türünden bir string için tarih bölümü gerekmektedir.

2013-02-08  # Takvim tarihi
2013-W06-5  # Haftalık bölüm
2013-039    # Sıralı bir tarih bölümü

20130208    # Kısa tam tarih
2013W065    # Kısa tarih hafta ve haftanın günü
2013W06     # Kısa tarih sadece hafta
2013050     # Kısa sıralı tarih

Ayrıca zaman içeren bölümler de kullanılabilir. Bu bölümler boşluk ya da büyük T harfi ile ayrılır.

2013-02-08T09            # T ile ayrılmış bir zaman bölümü
2013-02-08 09            # Boşluk ile ayrılmış bir zaman bölümü
2013-02-08 09:30         # Saat ve dakikadan oluşan zaman bölümü
2013-02-08 09:30:26      # Saat, dakika ve saniyeden oluşan zaman bölümü
2013-02-08 09:30:26.123  # Saat, dakika, saniye ve milisaniyeden oluşan zaman bölümü
2013-02-08 24:00:00.000  # Saat 24 ve dakika, saniye, milisaniye ise 0 yani ertesi gün 
                            gece yarısı anlamına gelmektedir.

20130208T080910,123      # Virgülle milisaniyeye kadar ayrılmış bir kısa tarih ve zaman.
20130208T080910.123      # Nokta ile milisaniyeye kadar ayrılmış bir kısa tarih ve zaman
20130208T080910          # Saniyeye kadar giden kısa tarih ve zaman
20130208T0809            # Dakikalara kadar gider kısa tarih ve zaman
20130208T08              # Kısa tarih ve zaman sadece saat içermektedir

Tarih Bilgisini Doğrulama

Eğer gelen tarih bilgisinin geçerli olmadığını düşünüyorsanız bunu isValid() isimli fonksiyonla aşağıdaki gibi doğrulayabilirsiniz.

moment("tarihten bağımsız string").isValid() // false

moment("19.19.20").isValid() // false

String + Format

moment(String, String)
moment(String, String, String)
moment(String, String, Boolean)
moment(String, String, String, Boolean)

Eğer girilen string'in formatını biliyorsanız, zamanı parse etmek için onu kullanabilirsiniz. Örnek:

moment("12-25-1995", "MM-DD-YYYY")

Bu aşamada parser alfanumerik olmayan karakterleri yok sayar, yani aşağıdaki iki kullanım da aynı sonucu üretir.

moment("12-25-1995", "MM-DD-YYYY")
moment("12/25/1995", "MM-DD-YYYY")

Kullanılan parser sembolleri (tokens) tıpkı moment#format fonksiyonunda olduğu gibi kullanılabilir.

Yıl, Ay ve Gün Sembolleri

Giriş Örnek Açıklama
YYYY 2018 4 ya da 2 karakter yıl
YY 18 2 karakter yıl
Y 2018 Herhangi bir sayının rakamı ve sembolü ile yıl
Q 1..4 Yılın hangi çeyreği olduğuna dair bilgiyi sayısal olarak verir
M MM 1..12 Ayın sayısal değerini verir
MMM MMMM Ara.. Aralık Ay adı. Ay adı moment.local() ile belirlenmiştir. Varsayılan en
D DD 1..31 Ayın günü
Do 1nd..31nd Sıralı olarak ayın günü
DDD DDDD 1.365 Ayın günü
X 1410715640.579 Unix timestamp
x 1410715640579 Unix timestamp ms türünden. Buradaki x küçük harflidir.

Hafta, Haftanın Günü ve Yılın Haftası İçin Semboller

Aşağıda yer alan küçük harflerle belirtili semboller yerel hafta günlerini kullanır. Büyük harfle belirtilmiş olan semboller ise ISO standartlarına göre haftanın gününü belirtir.

Giriş Örnek Açıklama
gggg 2018 4 karakter yerel tarihli haftanın yılı
gg 18 2 karakter yerel tarihli haftanın yılı
w ww 1..53 Yılın hafta sayısı
e 0..6 Haftanın kaçıncı günü
ddd dddd Pts...Pazar Haftanın gün adı
GGGG 2018 4 karakter ISO Standartlarına göre haftanın yılı
GG 18 2 karakter ISO Standartlarına göre haftanın yılı
W WW 1..53 ISO Standartlarına göre Yılın hafta sayısı
E 1..7 ISO Standartlarına göre haftanın kaçıncı günü

Saat, Dakika, Saniye, Milisaniye ve Offset Sembolleri

Giriş Örnek Açıklama
H HH 0..23 24 saatlik dilimi temsil eder
h hh 1..12 a ya da A ile kullanıldığında 12 saatlik dilimi temsil eder.
k kk 1..24 24 saatlik dilimi temsil eder. Farklı olarak değer 1'den başlar.
a A am pm Öğleden öncesi ve öğleden sonrası olarak temsil edilir. 1 2
m mm 0..59 Dakikaları temsil eder
s ss 0..59 Saniyeleri temsil eder
S SS SSS 0..999 Kesirli saniyeleri verir
Z ZZ +12:00 Offset yani saat farkını belirtmek için kullanılır 1

UYARI

2.10.5 sürümünden itibaren: Kesirli saniyelerde, kesirli saniyeye belirten sembollerin uzunluğu 4 karakterden 9 karaktere kadar uzayabilir. Ancak sadece ilk 3'ü dikkate alınacaktır.

BİLGİ

Açıkca bir saat dilimi belirtmediğiniz sürece, verilen değer geçerli zaman dilimini kullanarak parsing işlemine tabi tutulur.

Örnek

moment("2010-10-20 4:30",       "YYYY-MM-DD HH:mm");   // 4:30 yerel saat parse edildi
moment("2010-10-20 4:30 +0000", "YYYY-MM-DD HH:mm Z"); // 4:30 UTC zamanı olarak parse edildi

BİLGİ

Eğer moment'e verilen tarih gerçekte yoksa moment#isValid fonksiyonu false değeri dönecektir.

Örnek

moment("2010 13",           "YYYY MM").isValid();     // false (geçerli bir ay değil)
moment("2010 11 31",        "YYYY MM DD").isValid();  // false (geçerli bir gün değil)
moment("2010 2 29",         "YYYY MM DD").isValid();  // false (artık gün değil)
moment("2010 biraydegil 29", "YYYY MMM DD").isValid(); // false (geçerli bir ay adı değil)

BİLGİ

2.0.0 sürümünden itibaren dil sembolü (örnek: tr) moment() ve moment#utc fonksiyonlarına üçüncü parametre olarak atanabilir.

moment('2012 July', 'YYYY MMM', 'en');
moment('2012 Ocak',    'YYYY MMM', 'tr');

DİKKAT

Moment parser'ı biraz dikkatsiz davranabilir. Bu yüzden aşağıdakine benzer durumlara karşı dikkatli olmanız gerekmektedir.

Örnek

moment('2016 bir tarihtir', 'YYYY-MM-DD').isValid() 
// true dönecektir çünkü 2016 tarihle eşleşiyor.

Bunu aşmak için 2.3.0 sürümüyle birlikte gelen katı modda parse etme işlemini uygulayabilirsiniz. Üçüncü parametre olarak boolean türünden bir değer bu iş için yardımcı olacaktır.

Örnek

moment('2016 bir tarihtir', 'YYYY-MM-DD', true).isValid() 
// false dönecektir. Çünkü geçerli bir tarih değil

Özel Formatlar

Burası doldurulacak...

Son Güncelleme: 12/3/2018, 9:46:23 PM