Dates
Dates
modülü, tarihlerle çalışmak için iki tür sağlar: Date
ve DateTime
, sırasıyla gün ve milisaniye hassasiyetini temsil eder; her ikisi de soyut TimeType
türünün alt türleridir. Farklı türlerin motivasyonu basittir: bazı işlemler, daha büyük hassasiyetin karmaşıklıklarıyla uğraşmak zorunda kalmadığınızda, hem kod hem de zihinsel akıl yürütme açısından çok daha basittir. Örneğin, 4d61726b646f776e2e436f64652822222c2022446174652229_40726566
türü yalnızca tek bir tarihin hassasiyetine (yani saat, dakika veya saniye yok) çözündüğünden, zaman dilimleri, yaz saati uygulaması/yaz zamanı ve artık saniyeler için normal dikkate alınmalar gereksiz hale gelir ve kaçınılır.
Her iki Date
ve DateTime
temelde değişmez Int64
sarmalayıcılardır. Her iki türün tek instant
alanı aslında sürekli artan bir makine zaman çizelgesini temsil eden bir UTInstant{P}
türüdür ve bu, UT saniyesine dayanmaktadır [1]. 4d61726b646f776e2e436f64652822222c20224461746554696d652229_40726566
türü zaman dilimlerinden haberdar değildir (naif, Python terimiyle), Java 8'deki bir LocalDateTime ile benzerlik gösterir. Ek zaman dilimi işlevselliği, TimeZones.jl package aracılığıyla eklenebilir; bu, IANA time zone database derleyicisidir. Hem 4d61726b646f776e2e436f64652822222c2022446174652229_40726566
hem de 4d61726b646f776e2e436f64652822222c20224461746554696d652229_40726566
, proleptik Gregory takvimine uyan ISO 8601 standardına dayanmaktadır. Bir not olarak, ISO 8601 standardı M.Ö./M.S. tarihleri konusunda özeldir. Genel olarak, M.Ö./M.S. döneminin son günü, 1-12-31 M.Ö./M.S., 1-1-1 M.S./M.S. ile takip edilmiştir, bu nedenle sıfır yıl yoktur. Ancak ISO standardı, 1 M.Ö./M.S.'nin sıfır yıl olduğunu belirtmektedir, bu nedenle 0000-12-31
, 0001-01-01
'den bir gün öncesidir ve yıl -0001
(evet, yıl için negatif bir) 2 M.Ö./M.S., yıl -0002
3 M.Ö./M.S. vb. dir.
Constructors
Date
ve DateTime
türleri, tam sayılar veya Period
türleri tarafından, ayrıştırılarak veya ayarlayıcılar aracılığıyla (bunlar hakkında daha sonra) oluşturulabilir:
julia> DateTime(2013)
2013-01-01T00:00:00
julia> DateTime(2013,7)
2013-07-01T00:00:00
julia> DateTime(2013,7,1)
2013-07-01T00:00:00
julia> DateTime(2013,7,1,12)
2013-07-01T12:00:00
julia> DateTime(2013,7,1,12,30)
2013-07-01T12:30:00
julia> DateTime(2013,7,1,12,30,59)
2013-07-01T12:30:59
julia> DateTime(2013,7,1,12,30,59,1)
2013-07-01T12:30:59.001
julia> Date(2013)
2013-01-01
julia> Date(2013,7)
2013-07-01
julia> Date(2013,7,1)
2013-07-01
julia> Date(Dates.Year(2013),Dates.Month(7),Dates.Day(1))
2013-07-01
julia> Date(Dates.Month(7),Dates.Year(2013))
2013-07-01
Date
veya DateTime
ayrıştırma, format dizeleri kullanılarak gerçekleştirilir. Format dizeleri, bir noktayı ayrıştırmak için sınırlı veya sabit genişlikte "slotlar" tanımlama kavramıyla çalışır ve ayrıştırılacak metni ve bir 4d61726b646f776e2e436f64652822222c2022446174652229_40726566
veya 4d61726b646f776e2e436f64652822222c20224461746554696d652229_40726566
yapıcısına geçer, biçimi Date("2015-01-01",dateformat"y-m-d")
veya DateTime("20150101",dateformat"yyyymmdd")
şeklindedir.
Sınırlı alanlar, iki ardışık dönem arasında beklenen ayırıcıyı belirterek işaretlenir; bu nedenle "y-m-d"
ifadesi, bir tarih dizesi olan "2014-07-16"
içindeki birinci ve ikinci alan arasında -
karakterinin bulunması gerektiğini belirtir. y
, m
ve d
karakterleri, her alanda hangi dönemlerin ayrıştırılacağını belirtir.
Yukarıda Date(2013)
gibi yapıcılar için olduğu gibi, sınırlı DateFormat
'lar, önceki kısımlar verildiği sürece tarih ve saatlerin eksik parçalarına izin verir. Diğer parçalar, alışıldık varsayılan değerleri alır. Örneğin, Date("1981-03", dateformat"y-m-d")
1981-03-01
dönerken, Date("31/12", dateformat"d/m/y")
0001-12-31
verir. (Varsayılan yılın 1 MS/CE olduğunu unutmayın.) Ancak, boş bir dize her zaman bir ArgumentError
fırlatır.
Sabit genişlikteki slotlar, karakterler arasında herhangi bir ayırıcı olmaksızın genişliğe karşılık gelen sayıda nokta karakterini tekrarlayarak belirtilir. Bu nedenle dateformat"yyyymmdd"
ifadesi, "20140716"
gibi bir tarih dizesine karşılık gelir. Ayrıştırıcı, bir ayırıcı olmamasıyla sabit genişlikteki bir slotu ayırt eder ve bir nokta karakterinden diğerine geçişi "yyyymm"
olarak not eder.
Metin biçiminde ay ayrıştırma desteği, sırasıyla kısaltılmış ve tam uzunlukta ay adları için u
ve U
karakterleri aracılığıyla da desteklenmektedir. Varsayılan olarak, yalnızca İngilizce ay adları desteklenmektedir, bu nedenle u
"Jan", "Feb", "Mar" vb. ile ilişkilidir. U
ise "Ocak", "Şubat", "Mart" vb. ile ilişkilidir. Diğer ad=>değer eşleme işlevlerine benzer şekilde dayname
ve monthname
, özel yereller MONTHTOVALUEABBR
ve MONTHTOVALUE
sözlüklerine kısaltılmış ve tam ad ay adları için locale=>Dict{String,Int}
eşlemesi geçerek yüklenebilir.
Yukarıdaki örnekler dateformat""
dize makrosunu kullandı. Bu makro, makro genişletildiğinde bir DateFormat
nesnesi oluşturur ve bir kod parçası birden fazla kez çalıştırılsa bile aynı DateFormat
nesnesini kullanır.
julia> for i = 1:10^5
Date("2015-01-01", dateformat"y-m-d")
end
Ya da DateFormat nesnesini açıkça oluşturabilirsiniz:
julia> df = DateFormat("y-m-d");
julia> dt = Date("2015-01-01",df)
2015-01-01
julia> dt2 = Date("2015-01-02",df)
2015-01-02
Alternatif olarak, yayınlama kullanın:
julia> years = ["2015", "2016"];
julia> Date.(years, DateFormat("yyyy"))
2-element Vector{Date}:
2015-01-01
2016-01-01
Kolaylık açısından, format dizesini doğrudan geçebilirsiniz (örneğin, Date("2015-01-01","y-m-d")
), ancak bu form, aynı formatı tekrar tekrar ayrıştırıyorsanız performans maliyetleri doğurur, çünkü her seferinde yeni bir DateFormat
nesnesi oluşturur.
Date
veya DateTime
, parse
ve tryparse
fonksiyonları kullanılarak dizelerden oluşturulabilir, ancak formatı belirten DateFormat
türünde isteğe bağlı bir üçüncü argüman ile; örneğin, parse(Date, "06.23.2013", dateformat"m.d.y")
veya varsayılan formatı kullanan tryparse(DateTime, "1999-12-31T23:59:59")
. Fonksiyonlar arasındaki dikkat çekici fark, 4d61726b646f776e2e436f64652822222c202274727970617273652229_40726566
ile, dize boş veya geçersiz bir formatta olduğunda bir hata fırlatılmamasıdır; bunun yerine nothing
döndürülür.
Julia 1.9'dan önce, boş dizeler yapıcılara ve parse
'a hata vermeden geçirilebiliyordu ve uygun şekilde DateTime(1)
, Date(1)
veya Time(0)
döndürüyordu. Benzer şekilde, tryparse
da nothing
döndürmüyordu.
stdlib/Dates/test/io.jl
için tam bir ayrıştırma ve biçimlendirme testleri ve örnekleri mevcuttur.
Durations/Comparisons
Finding the length of time between two Date
or DateTime
is straightforward given their underlying representation as UTInstant{Day}
and UTInstant{Millisecond}
, respectively. The difference between Date
is returned in the number of Day
, and DateTime
in the number of Millisecond
. Similarly, comparing TimeType
is a simple matter of comparing the underlying machine instants (which in turn compares the internal Int64
values).
julia> dt = Date(2012,2,29)
2012-02-29
julia> dt2 = Date(2000,2,1)
2000-02-01
julia> dump(dt)
Date
instant: Dates.UTInstant{Day}
periods: Day
value: Int64 734562
julia> dump(dt2)
Date
instant: Dates.UTInstant{Day}
periods: Day
value: Int64 730151
julia> dt > dt2
true
julia> dt != dt2
true
julia> dt + dt2
ERROR: MethodError: no method matching +(::Date, ::Date)
[...]
julia> dt * dt2
ERROR: MethodError: no method matching *(::Date, ::Date)
[...]
julia> dt / dt2
ERROR: MethodError: no method matching /(::Date, ::Date)
julia> dt - dt2
4411 days
julia> dt2 - dt
-4411 days
julia> dt = DateTime(2012,2,29)
2012-02-29T00:00:00
julia> dt2 = DateTime(2000,2,1)
2000-02-01T00:00:00
julia> dt - dt2
381110400000 milliseconds
Accessor Functions
Çünkü Date
ve DateTime
türleri tek bir Int64
değeri olarak saklanmaktadır, tarih parçaları veya alanları erişim işlevleri aracılığıyla alınabilir. Küçük harfli erişim işlevleri alanı bir tamsayı olarak döndürür:
julia> t = Date(2014, 1, 31)
2014-01-31
julia> Dates.year(t)
2014
julia> Dates.month(t)
1
julia> Dates.week(t)
5
julia> Dates.day(t)
31
While propercase return the same value in the corresponding Period
type:
julia> Dates.Year(t)
2014 years
julia> Dates.Day(t)
31 days
Bileşen yöntemler, birden fazla alana aynı anda erişmenin bireysel olarak erişmekten daha verimli olması nedeniyle sağlanmıştır:
julia> Dates.yearmonth(t)
(2014, 1)
julia> Dates.monthday(t)
(1, 31)
julia> Dates.yearmonthday(t)
(2014, 1, 31)
Birisi ayrıca temel UTInstant
veya tam sayı değerine erişebilir:
julia> dump(t)
Date
instant: Dates.UTInstant{Day}
periods: Day
value: Int64 735264
julia> t.instant
Dates.UTInstant{Day}(Day(735264))
julia> Dates.value(t)
735264
Query Functions
Sorgu işlevleri, TimeType
hakkında takvim bilgileri sağlar. Haftanın günü hakkında bilgi içerir:
julia> t = Date(2014, 1, 31)
2014-01-31
julia> Dates.dayofweek(t)
5
julia> Dates.dayname(t)
"Friday"
julia> Dates.dayofweekofmonth(t) # 5th Friday of January
5
Yılın ayı:
julia> Dates.monthname(t)
"January"
julia> Dates.daysinmonth(t)
31
TimeType
'ın yılı ve çeyreği hakkında bilgi ile birlikte:
julia> Dates.isleapyear(t)
false
julia> Dates.dayofyear(t)
31
julia> Dates.quarterofyear(t)
1
julia> Dates.dayofquarter(t)
31
dayname
ve monthname
yöntemleri, diğer diller/yereller için gün veya ay adını döndürmek üzere kullanılabilecek isteğe bağlı bir locale
anahtar kelimesi alabilir. Ayrıca, kısaltılmış adları döndüren bu işlevlerin versiyonları da vardır; bunlar dayabbr
ve monthabbr
'dir. Öncelikle eşleme LOCALES
değişkenine yüklenir:
julia> french_months = ["janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre"];
julia> french_months_abbrev = ["janv","févr","mars","avril","mai","juin",
"juil","août","sept","oct","nov","déc"];
julia> french_days = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"];
julia> Dates.LOCALES["french"] = Dates.DateLocale(french_months, french_months_abbrev, french_days, [""]);
Yukarıda bahsedilen fonksiyonlar, sorguları gerçekleştirmek için kullanılabilir:
julia> Dates.dayname(t;locale="french")
"vendredi"
julia> Dates.monthname(t;locale="french")
"janvier"
julia> Dates.monthabbr(t;locale="french")
"janv"
Kısaltılmış gün versiyonları yüklenmediğinden, dayabbr
fonksiyonunu kullanmaya çalışmak bir hata verecektir.
julia> Dates.dayabbr(t;locale="french")
ERROR: BoundsError: attempt to access 1-element Vector{String} at index [5]
Stacktrace:
[...]
TimeType-Period Arithmetic
Herhangi bir dil/tarih çerçevesi kullanırken, tarih-dönem aritmetiğinin nasıl ele alındığını bilmek iyi bir uygulamadır, çünkü bazı tricky issues ile başa çıkmak gerekir (gün hassasiyetine sahip türler için çok daha az).
Dates
modülü yaklaşımı, Period
aritmetiği yaparken mümkün olduğunca az değişiklik yapma basit ilkesini takip etmeye çalışır. Bu yaklaşım genellikle takvimsel aritmetik olarak da bilinir veya birinin size aynı hesaplamayı bir konuşmada sorması durumunda muhtemelen tahmin edeceğiniz şeydir. Bununla neden bu kadar çok uğraşılıyor? Klasik bir örneğe bakalım: 31 Ocak 2014'e 1 ay ekleyin. Cevap nedir? Javascript March 3 (31 gün varsayıyor) diyecektir. PHP ise March 2 (30 gün varsayıyor) diyecektir. Gerçek şu ki, doğru bir cevap yoktur. Dates
modülünde sonuç 28 Şubat olarak verilmektedir. Bunu nasıl hesaplıyor? Kumarhanelerdeki klasik 7-7-7 kumar oyununu düşünün.
Şimdi sadece hayal edin ki 7-7-7 yerine, slotlar Yıl-Ay-Gün şeklinde, ya da bizim örneğimizde, 2014-01-31. Bu tarihe 1 ay eklemek istediğinizde, ay slotu artırılır, böylece artık 2014-02-31'imiz var. Ardından, gün numarasının yeni ayın son geçerli gününden büyük olup olmadığı kontrol edilir; eğer büyükse (yukarıdaki durumda olduğu gibi), gün numarası son geçerli güne (28) ayarlanır. Bu yaklaşımın sonuçları nelerdir? Hadi tarihimize bir ay ekleyelim, 2014-02-28 + Ay(1) == 2014-03-28
. Ne? Mart ayının son günü mü bekliyordunuz? Hayır, üzgünüm, 7-7-7 slotlarını hatırlayın. Mümkün olduğunca az slot değişecek, bu yüzden önce ay slotunu 1 artırıyoruz, 2014-03-28 ve boom, işimiz bitti çünkü bu geçerli bir tarih. Öte yandan, orijinal tarihe 2 ay eklersek, 2014-01-31, o zaman beklenildiği gibi 2014-03-31 ile karşılaşırız. Bu yaklaşımın diğer bir sonucu, belirli bir sıralamanın zorlandığı durumlarda (yani, farklı sıralarda ekleme yapmak farklı sonuçlar doğurur) bir birleşme kaybıdır. Örneğin:
julia> (Date(2014,1,29)+Dates.Day(1)) + Dates.Month(1)
2014-02-28
julia> (Date(2014,1,29)+Dates.Month(1)) + Dates.Day(1)
2014-03-01
Orada ne oluyor? İlk satırda, 29 Ocak'a 1 gün ekliyoruz, bu da 2014-01-30 sonucunu veriyor; ardından 1 ay ekliyoruz, bu da 2014-02-30 sonucunu veriyor, bu da 2014-02-28'e ayarlanıyor. İkinci örnekte, önce 1 ay ekliyoruz, burada 2014-02-29 elde ediyoruz, bu da 2014-02-28'e ayarlanıyor ve sonra 1 gün ekliyoruz, bu da 2014-03-01 sonucunu veriyor. Bu durumda yardımcı olan bir tasarım ilkesi, birden fazla Dönem bulunduğunda, işlemlerin Dönemlerin türlerine göre sıralanmasıdır, değerlerine veya konumsal sıralarına göre değil; bu, Yıl
'ın her zaman önce ekleneceği, ardından Ay
, sonra Hafta
vb. olacağı anlamına gelir. Bu nedenle aşağıdaki birliktelik sağlar ve İşler:
julia> Date(2014,1,29) + Dates.Day(1) + Dates.Month(1)
2014-03-01
julia> Date(2014,1,29) + Dates.Month(1) + Dates.Day(1)
2014-03-01
Karmaşık mı? Belki. Masum bir Dates
kullanıcısı ne yapsın? Sonuç olarak, aylarla ilgili bir belirli bir ilişkilendirmeyi açıkça zorlamanın bazı beklenmedik sonuçlara yol açabileceğini bilmek önemlidir, ancak aksi takdirde her şey beklenildiği gibi çalışmalıdır. Neyse ki, bu, UT'de zamanla ilgili tarih-dönem aritmetiğinde karşılaşılan garip durumların neredeyse tamamıdır (gündüz tasarrufu, artık saniyeler vb. ile başa çıkmanın "sevinçlerinden" kaçınarak).
Bir bonus olarak, tüm dönem aritmetik nesneleri doğrudan aralıklarla çalışır:
julia> dr = Date(2014,1,29):Day(1):Date(2014,2,3)
Date("2014-01-29"):Day(1):Date("2014-02-03")
julia> collect(dr)
6-element Vector{Date}:
2014-01-29
2014-01-30
2014-01-31
2014-02-01
2014-02-02
2014-02-03
julia> dr = Date(2014,1,29):Dates.Month(1):Date(2014,07,29)
Date("2014-01-29"):Month(1):Date("2014-07-29")
julia> collect(dr)
7-element Vector{Date}:
2014-01-29
2014-02-28
2014-03-29
2014-04-29
2014-05-29
2014-06-29
2014-07-29
Adjuster Functions
Tarih aritmetiği ne kadar kullanışlı olsa da, genellikle tarihler üzerinde gereken hesaplamalar, sabit bir dönem sayısından ziyade takvimsel veya zamansal bir nitelik taşır. Tatiller mükemmel bir örnektir; çoğu "Anma Günü = Mayıs'ın Son Pazartesi'si" veya "Şükran Günü = Kasım'ın 4. Perşembesi" gibi kuralları takip eder. Bu tür zamansal ifadeler, ayın ilk veya son günü, gelecek Salı veya birinci ve üçüncü Çarşamba gibi takvimle ilgili kurallarla ilgilidir.
Dates
modülü, zamansal kuralları basit ve özlü bir şekilde ifade etmeye yardımcı olan birkaç kullanışlı yöntem aracılığıyla ayarlayıcı API'sini sağlar. Ayarlayıcı yöntemlerin ilk grubu, haftaların, ayların, çeyreklerin ve yılların ilk ve sonlarıyla ilgilidir. Her biri tek bir TimeType
girişi alır ve girdiyle ilgili olarak istenen dönemin ilk veya sonuna ayarlar veya döner.
julia> Dates.firstdayofweek(Date(2014,7,16)) # Adjusts the input to the Monday of the input's week
2014-07-14
julia> Dates.lastdayofmonth(Date(2014,7,16)) # Adjusts to the last day of the input's month
2014-07-31
julia> Dates.lastdayofquarter(Date(2014,7,16)) # Adjusts to the last day of the input's quarter
2014-09-30
Sonraki iki yüksek dereceli yöntem, tonext
ve toprev
, bir DateFunction
'ı ilk argüman olarak alarak ve bir başlangıç TimeType
ile birlikte zamansal ifadelerle çalışmayı genelleştirir. Bir DateFunction
, genellikle anonim olan ve tek bir 4d61726b646f776e2e436f64652822222c202254696d65547970652229_40726566
girişi alan ve bir Bool
döndüren bir işlevdir; true
, tatmin edici bir ayarlama kriterini gösterir. Örneğin:
julia> istuesday = x->Dates.dayofweek(x) == Dates.Tuesday; # Returns true if the day of the week of x is Tuesday
julia> Dates.tonext(istuesday, Date(2014,7,13)) # 2014-07-13 is a Sunday
2014-07-15
julia> Dates.tonext(Date(2014,7,13), Dates.Tuesday) # Convenience method provided for day of the week adjustments
2014-07-15
Bu, daha karmaşık zamansal ifadeler için do-block sözdizimi ile kullanışlıdır:
julia> Dates.tonext(Date(2014,7,13)) do x
# Return true on the 4th Thursday of November (Thanksgiving)
Dates.dayofweek(x) == Dates.Thursday &&
Dates.dayofweekofmonth(x) == 4 &&
Dates.month(x) == Dates.November
end
2014-11-27
Base.filter
yöntemi, belirli bir aralıktaki tüm geçerli tarihleri/anları elde etmek için kullanılabilir:
# Pittsburgh street cleaning; Every 2nd Tuesday from April to November
# Date range from January 1st, 2014 to January 1st, 2015
julia> dr = Dates.Date(2014):Day(1):Dates.Date(2015);
julia> filter(dr) do x
Dates.dayofweek(x) == Dates.Tue &&
Dates.April <= Dates.month(x) <= Dates.Nov &&
Dates.dayofweekofmonth(x) == 2
end
8-element Vector{Date}:
2014-04-08
2014-05-13
2014-06-10
2014-07-08
2014-08-12
2014-09-09
2014-10-14
2014-11-11
Ekstra örnekler ve testler stdlib/Dates/test/adjusters.jl
adresinde mevcuttur.
Period Types
Dönemler, zamanın kesik, bazen düzensiz sürelerini insan bakış açısıyla değerlendiren bir kavramdır. 1 ayı düşünün; bu, yıl ve ay bağlamına bağlı olarak gün olarak 28, 29, 30 veya 31 değerini temsil edebilir. Ya da bir yıl, artık yıl durumunda 365 veya 366 gün olarak temsil edilebilir. Period
türleri basit Int64
sarmalayıcılarıdır ve herhangi bir Int64
dönüştürülebilir türü sarmalayarak oluşturulmuştur, yani Year(1)
veya Month(3.0)
. Aynı türdeki 4d61726b646f776e2e436f64652822222c2022506572696f642229_40726566
arasındaki aritmetik, tıpkı tam sayılar gibi davranır ve sınırlı Period-Real
aritmetiği mevcuttur. Temel tam sayıyı Dates.value
ile çıkarabilirsiniz.
julia> y1 = Dates.Year(1)
1 year
julia> y2 = Dates.Year(2)
2 years
julia> y3 = Dates.Year(10)
10 years
julia> y1 + y2
3 years
julia> div(y3,y2)
5
julia> y3 - y2
8 years
julia> y3 % y2
0 years
julia> div(y3,3) # mirrors integer division
3 years
julia> Dates.value(Dates.Millisecond(10))
10
Dönemleri veya temel türlerin tam katları olmayan süreleri temsil etmek, Dates.CompoundPeriod
türü ile gerçekleştirilebilir. Bileşik dönemler, basit Period
türlerinden manuel olarak oluşturulabilir. Ayrıca, canonicalize
fonksiyonu, bir dönemi 4d61726b646f776e2e436f64652822222c202244617465732e436f6d706f756e64506572696f642229_40726566
'ya ayırmak için kullanılabilir. Bu, bir süreyi, örneğin, iki DateTime
arasındaki farkı, daha uygun bir temsile dönüştürmek için özellikle yararlıdır.
julia> cp = Dates.CompoundPeriod(Day(1),Minute(1))
1 day, 1 minute
julia> t1 = DateTime(2018,8,8,16,58,00)
2018-08-08T16:58:00
julia> t2 = DateTime(2021,6,23,10,00,00)
2021-06-23T10:00:00
julia> canonicalize(t2-t1) # creates a CompoundPeriod
149 weeks, 6 days, 17 hours, 2 minutes
Rounding
Date
ve DateTime
değerleri, floor
, ceil
veya round
ile belirtilen bir çözünürlüğe (örneğin, 1 ay veya 15 dakika) yuvarlanabilir:
julia> floor(Date(1985, 8, 16), Dates.Month)
1985-08-01
julia> ceil(DateTime(2013, 2, 13, 0, 31, 20), Dates.Minute(15))
2013-02-13T00:45:00
julia> round(DateTime(2016, 8, 6, 20, 15), Dates.Day)
2016-08-07T00:00:00
round
yönteminin varsayılan olarak eşit sayılara doğru bağları kırdığı TimeType
4d61726b646f776e2e436f64652822222c2022726f756e642229_40726566
yönteminin RoundNearestTiesUp
yuvarlama modunu kullandığı gibi. (Eşit sayılara en yakın "çift" 4d61726b646f776e2e436f64652822222c202254696d65547970652229_40726566
bağlarını kırmanın ne anlama geleceğini tahmin etmek zordur.) Mevcut RoundingMode
lar hakkında daha fazla ayrıntı API reference içinde bulunabilir.
Yuvarlama genellikle beklenildiği gibi davranmalıdır, ancak beklenen davranışın belirgin olmadığı birkaç durum vardır.
Rounding Epoch
Birçok durumda, yuvarlama için belirtilen çözünürlük (örneğin, Dates.Second(30)
) bir sonraki en büyük döneme (bu durumda, Dates.Minute(1)
) tam olarak bölünür. Ancak, bunun doğru olmadığı durumlarda yuvarlama davranışı kafa karışıklığına yol açabilir. DateTime
değerini en yakın 10 saate yuvarlamanın beklenen sonucu nedir?
julia> round(DateTime(2016, 7, 17, 11, 55), Dates.Hour(10))
2016-07-17T12:00:00
Bu kafa karıştırıcı görünebilir, çünkü saat (12) 10'a tam bölünemez. 2016-07-17T12:00:00
'ın seçilmesinin nedeni, 0000-01-01T00:00:00
'dan 17,676,660 saat sonra olmasıdır ve 17,676,660 sayısı 10'a tam bölünebilir.
Julia Date
ve DateTime
değerleri ISO 8601 standardına göre temsil edilmektedir, 0000-01-01T00:00:00
günlerin (ve milisaniyelerin) yuvarlama hesaplamalarında kullanılacak olan sayımın başlangıcı (veya "yuvarlama epoch'u") olarak seçilmiştir. (Bu, Julia'nın 4d61726b646f776e2e436f64652822222c2022446174652229_40726566
değerlerini Rata Die notation kullanarak içsel temsilinden biraz farklıdır; ancak ISO 8601 standardı son kullanıcıya en görünür olanı olduğu için, karışıklığı en aza indirmek amacıyla yuvarlama epoch'u olarak 0000-01-01T00:00:00
seçilmiştir, içsel olarak kullanılan 0000-12-31T00:00:00
yerine.)
0000-01-01T00:00:00
olarak yuvarlama epokası kullanma konusundaki tek istisna, haftalara yuvarlamadır. En yakın haftaya yuvarlama her zaman bir Pazartesi (ISO 8601 tarafından belirtilen haftanın ilk günü) dönecektir. Bu nedenle, haftalara yuvarlarken 0000-01-03T00:00:00
(ISO 8601 tarafından tanımlanan yıl 0000'ın ilk haftasının ilk günü) temel olarak kullanılır.
İşte beklenen davranışın kesinlikle belirgin olmadığı ilgili bir durum: P(2)
'ye en yakın değere yuvarladığımızda ne olur, burada P
bir Period
türüdür? Bazı durumlarda (özellikle P <: Dates.TimePeriod
olduğunda) cevap nettir:
julia> round(DateTime(2016, 7, 17, 8, 55, 30), Dates.Hour(2))
2016-07-17T08:00:00
julia> round(DateTime(2016, 7, 17, 8, 55, 30), Dates.Minute(2))
2016-07-17T08:56:00
Bu, her bir bu dönemden ikisinin bir sonraki daha büyük dönemle eşit şekilde bölünmesi nedeniyle açık görünüyor. Ancak iki ay durumu (bir yıla hala eşit şekilde bölünebilen) için cevap şaşırtıcı olabilir:
julia> round(DateTime(2016, 7, 17, 8, 55, 30), Dates.Month(2))
2016-07-01T00:00:00
Neden Temmuz'un ilk gününe yuvarlanıyor, oysa bu 7. ay (tek bir sayı)? Anahtar, ayların 1'den başladığıdır (ilk ay 1 olarak atanır), saatler, dakikalar, saniyeler ve milisaniyeler gibi (ilk olanlar 0 olarak atanır).
Bu, DateTime
değerinin saniye, dakika, saat veya yıl gibi çift bir katına yuvarlanmasının (çünkü ISO 8601 spesifikasyonu sıfır yılı içerir) o alanda çift bir değere sahip bir 4d61726b646f776e2e436f64652822222c20224461746554696d652229_40726566
ile sonuçlanacağı anlamına gelirken, 4d61726b646f776e2e436f64652822222c20224461746554696d652229_40726566
değerinin çift bir katına ay olarak yuvarlanmasının aylar alanının tek bir değere sahip olacağı anlamına gelir. Hem ayların hem de yılların düzensiz sayıda gün içerebileceğinden, çift bir gün sayısına yuvarlamanın günler alanında çift bir değere yol açıp açmayacağı belirsizdir.
Dates
modülünden dışa aktarılan yöntemler hakkında ek bilgi için API reference'ye bakın.
API reference
Dates and Time Types
Dates.Period
— TypeDönem
Yıl
Çeyrek
Ay
Hafta
Gün
Saat
Dakika
Saniye
Milisaniye
Mikrosaniye
Nanosaniye
Dönem
türleri, zamanın kesikli, insana ait temsillerini temsil eder.
Dates.CompoundPeriod
— TypeBileşikDönem
Bir BileşikDönem
, daha küçük dönemlerin sabit bir katı olmayan zaman dilimlerini ifade etmek için yararlıdır. Örneğin, "bir yıl ve bir gün" sabit bir gün sayısı değildir, ancak bir BileşikDönem
kullanılarak ifade edilebilir. Aslında, farklı dönem türlerinin toplanmasıyla otomatik olarak bir BileşikDönem
üretilir; örneğin, Yıl(1) + Gün(1)
bir BileşikDönem
sonucu üretir.
Dates.Instant
— TypeInstant
Instant
türleri, bir epoch'tan başlayarak sürekli zaman çizgileri olarak zamanın tam sayı tabanlı, makine temsillerini temsil eder.
Dates.UTInstant
— TypeUTInstant{T}
UTInstant
, UT zamanına dayalı bir makine zaman çizelgesini temsil eder (1 gün = dünyanın bir devri). T
, anın çözünürlüğünü veya hassasiyetini belirten bir Period
parametresidir.
Dates.TimeType
— TypeTimeType
TimeType
türleri, makine anlarının insan temsillerini sağlamak için Instant
makine örneklerini sarar. Time
, DateTime
ve Date
, TimeType
'ın alt türleridir.
Dates.DateTime
— TypeDateTime
DateTime
, proleptik Gregory takvimine göre bir zaman noktasını temsil eder. Zamanın en ince çözünürlüğü milisaniyedir (yani, mikro saniyeler veya nano saniyeler bu türle temsil edilemez). Bu tür, sabit nokta aritmetiğini destekler ve bu nedenle alt akma (veya üst akma) eğilimindedir. Önemli bir sonuç, bir Mikrosaniye
veya Nanosaniye
eklerken yuvarlamadır:
julia> dt = DateTime(2023, 8, 19, 17, 45, 32, 900)
2023-08-19T17:45:32.900
julia> dt + Millisecond(1)
2023-08-19T17:45:32.901
julia> dt + Microsecond(1000) # 1000us == 1ms
2023-08-19T17:45:32.901
julia> dt + Microsecond(999) # 999us 1000us'a yuvarlandı
2023-08-19T17:45:32.901
julia> dt + Microsecond(1499) # 1499 1000us'a yuvarlandı
2023-08-19T17:45:32.901
Dates.Date
— TypeTarih
Tarih
, bir UTInstant{Gün}
sarmalar ve onu proleptik Gregoryen takvimine göre yorumlar.
Dates.Time
— TypeZaman
Zaman
, bir Nanosecond
'ı sarar ve 24 saatlik bir günde belirli bir anı temsil eder.
Dates.TimeZone
— TypeZaman Dilimi
Genellikle belirli bir konumdaki saati belirleyen boylam temelinde coğrafi bölge. Bazı zaman dilimleri yaz saati uygulamasını gözlemlemektedir (örneğin EST -> EDT). Uygulamalar ve daha fazla destek için TimeZones.jl
paketine bakın.
Dates.UTC
— TypeUTC
UTC
, veya Koordine Evrensel Zaman, tüm diğerlerinin ölçüldüğü TimeZone
dir. 0° boylamındaki zamanla ilişkilidir. Yaz saati uygulaması için ayarlanmamıştır.
Dates Functions
Dates.DateTime
— MethodDateTime(y, [m, d, h, mi, s, ms]) -> DateTime
Parçalarla bir DateTime
türü oluşturun. Argümanlar Int64
türüne dönüştürülebilir olmalıdır.
Dates.DateTime
— MethodDateTime(periods::Period...) -> DateTime
Period
türündeki parçalarla bir DateTime
türü oluşturun. Argümanlar herhangi bir sırada olabilir. Sağlanmayan DateTime parçaları Dates.default(period)
değerine varsayılan olarak ayarlanacaktır.
Dates.DateTime
— MethodDateTime(f::Function, y[, m, d, h, mi, s]; step=Day(1), limit=10000) -> DateTime
Bir DateTime
oluşturun, ayarlayıcı API'si aracılığıyla. Başlangıç noktası, sağlanan y, m, d...
argümanlarından oluşturulacak ve f::Function
true
döndürene kadar ayarlanacaktır. Ayarlamada adım boyutu, step
anahtar kelimesi aracılığıyla manuel olarak sağlanabilir. limit
, ayarlama API'sinin bir hata fırlatmadan önce takip edeceği maksimum iterasyon sayısına bir sınır sağlar (eğer f::Function
asla tatmin edilmezse).
Örnekler
julia> DateTime(dt -> second(dt) == 40, 2010, 10, 20, 10; step = Second(1))
2010-10-20T10:00:40
julia> DateTime(dt -> hour(dt) == 20, 2010, 10, 20, 10; step = Hour(1), limit = 5)
HATA: ArgumentError: Ayarlama limiti aşıldı: 5 iterasyon
Stacktrace:
[...]
Dates.DateTime
— MethodDateTime(dt::Date) -> DateTime
Bir Date
'i DateTime
'e dönüştürür. Yeni DateTime
'in saat, dakika, saniye ve milisaniye kısımlarının sıfır olduğu varsayılmaktadır.
Dates.DateTime
— MethodDateTime(dt::AbstractString, format::AbstractString; locale="english") -> DateTime
dt
tarih saat dizesini format
dizesinde verilen desene göre ayrıştırarak bir DateTime
oluşturur (sözdizimi için DateFormat
bakınız).
Bu yöntem her çağrıldığında bir DateFormat
nesnesi oluşturur. Aynı formatı tekrar tekrar kullanırken performans kaybını önlemek için bunun yerine bir DateFormat
nesnesi oluşturmanız ve bunu ikinci argüman olarak kullanmanız önerilir.
Örnekler
julia> DateTime("2020-01-01", "yyyy-mm-dd")
2020-01-01T00:00:00
julia> a = ("2020-01-01", "2020-01-02");
julia> [DateTime(d, dateformat"yyyy-mm-dd") for d ∈ a] # tercih edilen
2-element Vector{DateTime}:
2020-01-01T00:00:00
2020-01-02T00:00:00
Dates.format
— Methodformat(dt::TimeType, format::AbstractString; locale="türkçe") -> AbstractString
Bir TimeType
nesnesi kullanarak ve sağlanan format
'ı uygulayarak bir dize oluşturun. Aşağıdaki karakter kodları format
dizesini oluşturmak için kullanılabilir:
Kod | Örnekler | Açıklama |
---|---|---|
y | 6 | Sabit genişlikte sayısal yıl |
Y | 1996 | Minimum genişlikte sayısal yıl |
m | 1, 12 | Minimum genişlikte sayısal ay |
u | Jan | locale 'a göre 3 karaktere kısaltılmış ay adı |
U | January | locale anahtar kelimesine göre tam ay adı |
d | 1, 31 | Minimum genişlikte ayın günü |
H | 0, 23 | Minimum genişlikte saat (24 saatlik saat) |
M | 0, 59 | Minimum genişlikte dakika |
S | 0, 59 | Minimum genişlikte saniye |
s | 000, 500 | Minimum genişlikte 3 haneli milisaniye |
e | Mon, Tue | Kısaltılmış hafta günleri |
E | Monday | Haftanın tam günü adı |
Ardışık kod karakterlerinin sayısı, kodun genişliğini belirtir. yyyy-mm
formatı, y
kodunun dört genişliğe sahip olmasını, m
kodunun ise iki genişliğe sahip olmasını belirtir. Sayısal rakamlar üreten kodların bir mod ile ilişkisi vardır: sabit genişlik veya minimum genişlik. Sabit genişlik modu, belirtilen genişlikten daha kısa olduğunda değeri sıfırlarla soldan doldurur ve daha uzun olduğunda değeri keser. Minimum genişlik modu, genişlikten daha uzun olan değerleri kesmeden sabit genişlik gibi çalışır.
Bir format
oluştururken, ayırıcı olarak herhangi bir kod dışı karakter kullanabilirsiniz. Örneğin "1996-01-15T00:00:00" dizesini oluşturmak için format
: "yyyy-mm-ddTHH:MM:SS" kullanabilirsiniz. Bir kod karakterini literal olarak kullanmanız gerektiğinde, kaçış karakteri ters eğik çizgi kullanabilirsiniz. "1996y01m" dizesi "yyyy\ymm\m" formatı ile üretilebilir.
Dates.DateFormat
— TypeDateFormat(format::AbstractString, locale="türkçe") -> DateFormat
Tarih dize'lerini ayrıştırmak veya bir tarih nesnesini dize olarak biçimlendirmek için kullanılabilecek bir tarih biçimlendirme nesnesi oluşturur. Aşağıdaki karakter kodları format
dizesini oluşturmak için kullanılabilir:
Kod | Eşleşir | Açıklama |
---|---|---|
Y | 1996, 96 | 1996, 0096 yılını döndürür |
y | 1996, 96 | parse üzerinde Y ile aynı ancak format üzerinde fazla basamakları atar |
m | 1, 01 | 1 veya 2 basamaklı ayları eşleştirir |
u | Oca | locale anahtar kelimesine göre kısaltılmış ayları eşleştirir |
U | Ocak | locale anahtar kelimesine göre tam ay adlarını eşleştirir |
d | 1, 01 | 1 veya 2 basamaklı günleri eşleştirir |
H | 00 | Saatleri (24 saatlik saat) eşleştirir |
I | 00 | 12 saatlik saat ile saatleri çıkarmak için |
M | 00 | Dakikaları eşleştirir |
S | 00 | Saniyeleri eşleştirir |
s | .500 | Milisaniyeleri eşleştirir |
e | Paz, Sal | Kısaltılmış haftanın günlerini eşleştirir |
E | Pazartesi | Haftanın günlerinin tam adını eşleştirir |
p | AM | AM/PM'yi (büyük/küçük harf duyarsız) eşleştirir |
yyyymmdd | 19960101 | Sabit genişlikte yıl, ay ve günü eşleştirir |
Yukarıda listelenmeyen karakterler genellikle tarih ve saat dilimleri arasındaki ayırıcılar olarak kabul edilir. Örneğin, "1996-01-15T00:00:00.0" dizesinin format
dizesi "y-m-dTH:M:S.s" gibi olacaktır. Bir kod karakterini ayırıcı olarak kullanmanız gerekiyorsa, onu ters eğik çizgi ile kaçırabilirsiniz. "1995y01m" tarihi "y\ym\m" formatına sahip olacaktır.
12:00AM'nin 00:00 (gece yarısı) ile, 12:00PM'nin 12:00 (öğle) ile eşleştiğini unutmayın. p
belirteci ile bir zamanı ayrıştırırken, herhangi bir saat (ister H
ister I
) 12 saatlik saat olarak yorumlanır, bu nedenle I
kodu esasen çıktı için faydalıdır.
Bir DateFormat nesnesi oluşturmak maliyetlidir. Mümkün olduğunda, bir kez oluşturun ve birçok kez kullanın veya dateformat""
dize makrosunu deneyin. Bu makro, DateFormat nesnesini makro genişletme zamanında bir kez oluşturur ve daha sonra yeniden kullanır. Ayrıca, daha sonra listelenen birkaç önceden tanımlı biçimlendirici vardır.
DateTime
ve format
ile bir DateFormat nesnesini tarih dizelerini ayrıştırmak ve yazmak için nasıl kullanacağınızı görün.
Dates.@dateformat_str
— Macrodateformat"Y-m-d H:M:S"
Bir DateFormat
nesnesi oluşturun. DateFormat("Y-m-d H:M:S")
ile benzer, ancak DateFormat nesnesini makro genişletme sırasında bir kez oluşturur.
Format belirteçleri hakkında daha fazla bilgi için DateFormat
sayfasına bakın.
Dates.DateTime
— MethodDateTime(dt::AbstractString, df::DateFormat=ISODateTimeFormat) -> DateTime
dt
tarih saat dizesini DateFormat
nesnesinde verilen desene göre ayrıştırarak bir DateTime
oluşturur veya belirtilmezse dateformat"yyyy-mm-dd\THH:MM:SS.s" kullanır.
DateTime(::AbstractString, ::AbstractString)
ile benzer, ancak önceden oluşturulmuş bir DateFormat
nesnesi ile benzer biçimlendirilmiş tarih saat dizelerini tekrar tekrar ayrıştırırken daha verimlidir.
Dates.Date
— MethodDate(y, [m, d]) -> Date
Parçalarla bir Date
türü oluşturun. Argümanlar Int64
türüne dönüştürülebilir olmalıdır.
Dates.Date
— MethodDate(period::Period...) -> Date
Period
tür parçaları ile bir Date
türü oluşturun. Argümanlar herhangi bir sırada olabilir. Sağlanmayan Date
parçaları, Dates.default(period)
değerine varsayılan olarak ayarlanacaktır.
Dates.Date
— MethodDate(f::Function, y[, m, d]; step=Day(1), limit=10000) -> Date
Date
'i ayarlayıcı API'si aracılığıyla oluşturun. Başlangıç noktası, sağlanan y, m, d
argümanlarından oluşturulacak ve f::Function
doğru döndüğü sürece ayarlanacaktır. Ayarlamada adım boyutu, step
anahtar kelimesi aracılığıyla manuel olarak sağlanabilir. limit
, ayarlama API'sinin bir hata fırlatmadan önce takip edeceği maksimum yineleme sayısına bir sınır sağlar (verilen f::Function
asla tatmin edilmezse).
Örnekler
julia> Date(date -> week(date) == 20, 2010, 01, 01)
2010-05-17
julia> Date(date -> year(date) == 2010, 2000, 01, 01)
2010-01-01
julia> Date(date -> month(date) == 10, 2000, 01, 01; limit = 5)
HATA: ArgumentError: Ayarlama limiti aşıldı: 5 yineleme
Stacktrace:
[...]
Dates.Date
— MethodDate(dt::DateTime) -> Date
Bir DateTime
'ı Date
'e dönüştürür. DateTime
'ın saat, dakika, saniye ve milisaniye kısımları kesilir, bu nedenle yalnızca yıl, ay ve gün kısımları inşaatta kullanılır.
Dates.Date
— MethodDate(d::AbstractString, format::AbstractString; locale="türkçe") -> Date
d
tarih dizesini format
dizesinde verilen desene göre ayrıştırarak bir Date
oluşturur (sözdizimi için DateFormat
bölümüne bakın).
Bu yöntem her çağrıldığında bir DateFormat
nesnesi oluşturur. Aynı formatı tekrar tekrar kullanırken performans kaybını önlemek için bunun yerine bir DateFormat
nesnesi oluşturmanız ve bunu ikinci argüman olarak kullanmanız önerilir.
Örnekler
julia> Date("2020-01-01", "yyyy-mm-dd")
2020-01-01
julia> a = ("2020-01-01", "2020-01-02");
julia> [Date(d, dateformat"yyyy-mm-dd") for d ∈ a] # tercih edilen
2-element Vector{Date}:
2020-01-01
2020-01-02
Dates.Date
— MethodDate(d::AbstractString, df::DateFormat=ISODateFormat) -> Date
d
tarih dizesini DateFormat
nesnesinde belirtilen desene göre ayrıştırarak bir Date
oluşturur veya belirtilmezse tarihformat"yyyy-mm-dd" kullanır.
Date(::AbstractString, ::AbstractString)
ile benzer, ancak önceden oluşturulmuş bir DateFormat
nesnesi ile benzer biçimlendirilmiş tarih dizelerini tekrar tekrar ayrıştırırken daha verimlidir.
Dates.Time
— MethodZaman(h, [dk, s, ms, us, ns]) -> Zaman
Parçalar halinde bir Zaman
türü oluşturun. Argümanlar Int64
türüne dönüştürülebilir olmalıdır.
Dates.Time
— MethodTime(period::TimePeriod...) -> Time
Period
türündeki parçalarla bir Time
türü oluşturun. Argümanlar herhangi bir sırada olabilir. Sağlanmayan Time
parçaları Dates.default(period)
değerine varsayılan olarak ayarlanacaktır.
Dates.Time
— MethodTime(f::Function, h, mi=0; step::Period=Second(1), limit::Int=10000)
Time(f::Function, h, mi, s; step::Period=Millisecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms; step::Period=Microsecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms, us; step::Period=Nanosecond(1), limit::Int=10000)
h, mi, s, ms, us
argümanlarından sağlanan başlangıç noktası ile adjuster API
aracılığıyla bir Time
oluşturun ve f::Function
true
döndürene kadar ayarlayın. Ayarlama için adım boyutu, step
anahtar kelimesi aracılığıyla manuel olarak sağlanabilir. limit
, ayarlama API'sinin bir hata fırlatmadan önce takip edeceği maksimum iterasyon sayısına bir sınır sağlar (eğer f::Function
asla tatmin edilmezse). Verilen argümanlar için daha büyük hassasiyet sağlamak üzere varsayılan adımın ayarlanacağını unutmayın; yani, saat, dakika ve saniye argümanları sağlandığında, varsayılan adım Second(1)
yerine Millisecond(1)
olacaktır.
Örnekler
julia> Time(t -> minute(t) == 30, 20)
20:30:00
julia> Time(t -> minute(t) == 0, 20)
20:00:00
julia> Time(t -> hour(t) == 10, 3; limit = 5)
HATA: ArgumentError: Ayarlama limiti aşıldı: 5 iterasyon
Stacktrace:
[...]
Dates.Time
— MethodTime(dt::DateTime) -> Time
Bir DateTime
'i Time
'a dönüştürür. DateTime
'ın saat, dakika, saniye ve milisaniye kısımları yeni Time
'ı oluşturmak için kullanılır. Mikrosaniye ve nanosaniyeler varsayılan olarak sıfırdır.
Dates.Time
— MethodTime(t::AbstractString, format::AbstractString; locale="türkçe") -> Time
format
dizesinde belirtilen desene göre t
zaman dizesini ayrıştırarak bir Time
oluşturur (sözdizimi için DateFormat
bölümüne bakın).
Bu yöntem her çağrıldığında bir DateFormat
nesnesi oluşturur. Aynı formatı tekrar tekrar kullanırken performans kaybını önlemek için bunun yerine bir DateFormat
nesnesi oluşturup ikinci argüman olarak kullanmanız önerilir.
Örnekler
julia> Time("12:34pm", "HH:MMp")
12:34:00
julia> a = ("12:34pm", "2:34am");
julia> [Time(d, dateformat"HH:MMp") for d ∈ a] # tercih edilen
2-element Vector{Time}:
12:34:00
02:34:00
Dates.Time
— MethodTime(t::AbstractString, df::DateFormat=ISOTimeFormat) -> Time
Time
nesnesini, belirtilen DateFormat
nesnesinde verilen deseni izleyerek t
tarih saat dizesini ayrıştırarak oluşturur veya belirtilmezse tarihformat"HH:MM:SS.s" kullanır.
Time(::AbstractString, ::AbstractString)
ile benzer, ancak önceden oluşturulmuş bir DateFormat
nesnesi ile benzer biçimlendirilmiş zaman dizelerini tekrar tekrar ayrıştırırken daha verimlidir.
Dates.now
— Methodnow() -> DateTime
Kullanıcının sistem saatine ve sistem saat dilimi yerel ayarına karşılık gelen bir DateTime
döndürür.
Dates.now
— Methodnow(::Type{UTC}) -> DateTime
Kullanıcının sistem saatine karşılık gelen bir DateTime
döndürür, UTC/GMT olarak. Diğer saat dilimleri için TimeZones.jl paketine bakın.
Örnekler
julia> now(UTC)
2023-01-04T10:52:24.864
Base.eps
— Methodeps(::Type{DateTime}) -> Millisaniye
eps(::Type{Date}) -> Gün
eps(::Type{Time}) -> Nan saniye
eps(::TimeType) -> Periyot
TimeType
tarafından desteklenen en küçük birim değerini döndürür.
Örnekler
julia> eps(DateTime)
1 millisaniye
julia> eps(Date)
1 gün
julia> eps(Time)
1 nan saniye
Accessor Functions
Dates.year
— Functionyear(dt::TimeType) -> Int64
Bir Date
veya DateTime
'ın Int64
olarak yılı.
Dates.month
— Functionmonth(dt::TimeType) -> Int64
Bir Date
veya DateTime
'ın Int64
olarak ayı.
Dates.week
— Functionweek(dt::TimeType) -> Int64
Bir Date
veya DateTime
'ın ISO hafta tarihi olarak bir Int64
döndürür. Bir yılın ilk haftası, yılın ilk Perşembe'sini içeren haftadır; bu, 4 Ocak'tan önceki tarihlerinin bir önceki yılın son haftasında olmasına neden olabilir. Örneğin, week(Date(2005, 1, 1))
2004'ün 53. haftasıdır.
Örnekler
julia> week(Date(1989, 6, 22))
25
julia> week(Date(2005, 1, 1))
53
julia> week(Date(2004, 12, 31))
53
Dates.day
— Functionday(dt::TimeType) -> Int64
Bir Date
veya DateTime
'ın ayın günü olarak bir Int64
döner.
Dates.hour
— Functionhour(dt::DateTime) -> Int64
Bir DateTime
'in günündeki saatini Int64
olarak döndürür.
hour(t::Time) -> Int64
Bir Time
'ın saatini Int64
olarak döndürür.
Dates.minute
— Functionminute(dt::DateTime) -> Int64
Bir DateTime
'in dakikasını Int64
olarak döndürür.
minute(t::Time) -> Int64
Bir Time
'ın dakikası Int64
olarak.
Dates.second
— Functionsecond(dt::DateTime) -> Int64
Bir DateTime
'in saniyesi Int64
olarak.
second(t::Time) -> Int64
Bir Time
'ın Int64
olarak saniyesi.
Dates.millisecond
— Functionmillisecond(dt::DateTime) -> Int64
Bir DateTime
'in milisaniyesi Int64
olarak.
millisecond(t::Time) -> Int64
Bir Time
'ın milisaniyesi Int64
olarak.
Dates.microsecond
— Functionmikrosaniye(t::Time) -> Int64
Bir Time
nesnesinin mikrosaniyesi Int64
olarak.
Dates.nanosecond
— Functionnanosecond(t::Time) -> Int64
Bir Time
nesnesinin nanosekundası Int64
olarak.
Dates.Year
— MethodYear(v)
Verilen v
değeri ile bir Year
nesnesi oluşturun. Girdi, Int64
türüne kayıpsız bir şekilde dönüştürülebilir olmalıdır.
Dates.Month
— MethodMonth(v)
Verilen v
değeri ile bir Month
nesnesi oluşturun. Girdi, Int64
türüne kayıpsız bir şekilde dönüştürülebilir olmalıdır.
Dates.Week
— MethodWeek(v)
Verilen v
değeri ile bir Week
nesnesi oluşturun. Girdi, kayıpsız bir şekilde Int64
türüne dönüştürülebilir olmalıdır.
Dates.Day
— MethodDay(v)
Verilen v
değeri ile bir Day
nesnesi oluşturun. Girdi, Int64
türüne kayıpsız bir şekilde dönüştürülebilir olmalıdır.
Dates.Hour
— MethodHour(dt::DateTime) -> Hour
Bir DateTime'in saat kısmı Hour
olarak.
Dates.Minute
— MethodMinute(dt::DateTime) -> Minute
Bir DateTime'ın dakika kısmı Minute
olarak.
Dates.Second
— MethodSecond(dt::DateTime) -> Second
Bir DateTime'ın ikinci kısmı Second
olarak.
Dates.Millisecond
— MethodMillisecond(dt::DateTime) -> Millisecond
Bir DateTime nesnesinin milisaniye kısmı Millisecond
olarak.
Dates.Microsecond
— MethodMicrosecond(dt::Time) -> Microsecond
Bir Zamanın mikro saniye kısmı Microsecond
olarak.
Dates.Nanosecond
— MethodNanosecond(dt::Time) -> Nanosecond
Bir Zamanın nanosecond kısmı Nanosecond
olarak.
Dates.yearmonth
— Functionyearmonth(dt::TimeType) -> (Int64, Int64)
Bir Date
veya DateTime
'ın yıl ve ay kısımlarını aynı anda döndürür.
Dates.monthday
— Functionmonthday(dt::TimeType) -> (Int64, Int64)
Bir Date
veya DateTime
'ın ay ve gün kısımlarını aynı anda döndürür.
Dates.yearmonthday
— Functionyearmonthday(dt::TimeType) -> (Int64, Int64, Int64)
Bir Date
veya DateTime
'ın yıl, ay ve gün kısımlarını aynı anda döndürür.
Query Functions
Dates.dayname
— Functiondayname(dt::TimeType; locale="türkçe") -> String
dayname(day::Integer; locale="türkçe") -> String
Verilen locale
'deki haftanın gününe karşılık gelen tam gün adını döndürür. Ayrıca Integer
da kabul eder.
Örnekler
julia> dayname(Date("2000-01-01"))
"Cumartesi"
julia> dayname(4)
"Perşembe"
Dates.dayabbr
— Functiondayabbr(dt::TimeType; locale="türkçe") -> String
dayabbr(day::Integer; locale="türkçe") -> String
Verilen locale
'deki haftanın gününe karşılık gelen kısaltılmış ismi döndürür. Ayrıca Integer
da kabul eder.
Örnekler
julia> dayabbr(Date("2000-01-01"))
"Cum"
julia> dayabbr(3)
"Çar"
Dates.dayofweek
— Functiondayofweek(dt::TimeType) -> Int64
Haftanın gününü Int64
olarak döndürür; 1 = Pazartesi, 2 = Salı, vb.
.
Örnekler
julia> dayofweek(Date("2000-01-01"))
6
Dates.dayofmonth
— Functiondayofmonth(dt::TimeType) -> Int64
Bir Date
veya DateTime
'ın ay içindeki günü Int64
olarak döndürür.
Dates.dayofweekofmonth
— Functiondayofweekofmonth(dt::TimeType) -> Int
dt
'nin haftanın günü için, dt
'nin ayındaki hangi numara olduğunu döndür. Yani, eğer dt
'nin haftanın günü Pazartesi ise, o zaman 1 = Ayın İlk Pazartesi'si, 2 = Ayın İkinci Pazartesi'si, vb.
1:5 aralığında.
Örnekler
julia> dayofweekofmonth(Date("2000-02-01"))
1
julia> dayofweekofmonth(Date("2000-02-08"))
2
julia> dayofweekofmonth(Date("2000-02-15"))
3
Dates.daysofweekinmonth
— Functiondaysofweekinmonth(dt::TimeType) -> Int
dt
'nin haftanın günü için, dt
'nin ayındaki o haftanın günlerinin toplam sayısını döndürür. 4 veya 5 döner. Bir ay içindeki haftanın son gününü belirtmek için dayofweekofmonth(dt) == daysofweekinmonth(dt)
ifadesini ayarlayıcı fonksiyona dahil ederek zamansal ifadelerde kullanışlıdır.
Örnekler
julia> daysofweekinmonth(Date("2005-01-01"))
5
julia> daysofweekinmonth(Date("2005-01-04"))
4
Dates.monthname
— Functionmonthname(dt::TimeType; locale="türkçe") -> String
monthname(month::Integer, locale="türkçe") -> String
Verilen locale
'deki Date
veya DateTime
veya Integer
'ın ayının tam adını döndürür.
Örnekler
julia> monthname(Date("2005-01-04"))
"Ocak"
julia> monthname(2)
"Şubat"
Dates.monthabbr
— Functionmonthabbr(dt::TimeType; locale="türkçe") -> String
monthabbr(month::Integer, locale="türkçe") -> String
Verilen locale
'deki Date
veya DateTime
veya Integer
'ın kısaltılmış ay adını döndürür.
Örnekler
julia> monthabbr(Date("2005-01-04"))
"Jan"
julia> monthabbr(2)
"Feb"
Dates.daysinmonth
— Functiondaysinmonth(dt::TimeType) -> Int
dt
'nin ayındaki gün sayısını döndürür. Değer 28, 29, 30 veya 31 olacaktır.
Örnekler
julia> daysinmonth(Date("2000-01"))
31
julia> daysinmonth(Date("2001-02"))
28
julia> daysinmonth(Date("2000-02"))
29
Dates.isleapyear
— Functionisleapyear(dt::TimeType) -> Bool
dt
'nin yılı bir artık yıl ise true
döner.
Örnekler
julia> isleapyear(Date("2004"))
true
julia> isleapyear(Date("2005"))
false
Dates.dayofyear
— Functiondayofyear(dt::TimeType) -> Int
dt
için yılın gününü döndürür; 1 Ocak 1. gün olarak kabul edilir.
Dates.daysinyear
— Functiondaysinyear(dt::TimeType) -> Int
dt
yılının artık yıl olması durumunda 366, aksi takdirde 365 döndürün.
Örnekler
julia> daysinyear(1999)
365
julia> daysinyear(2000)
366
Dates.quarterofyear
— Functionquarterofyear(dt::TimeType) -> Int
dt
'nin bulunduğu çeyreği döndürür. Değer aralığı 1:4'tür.
Dates.dayofquarter
— Functiondayofquarter(dt::TimeType) -> Int
dt
'nin mevcut çeyreğindeki günü döndürür. Değer aralığı 1:92'dir.
Adjuster Functions
Base.trunc
— Methodtrunc(dt::TimeType, ::Type{Period}) -> TimeType
dt
değerini sağlanan Period
türüne göre keser.
Örnekler
julia> trunc(DateTime("1996-01-01T12:30:00"), Day)
1996-01-01T00:00:00
Dates.firstdayofweek
— Functionfirstdayofweek(dt::TimeType) -> TimeType
dt
'yi haftasının Pazartesi gününe ayarlar.
Örnekler
julia> firstdayofweek(DateTime("1996-01-05T12:30:00"))
1996-01-01T00:00:00
Dates.lastdayofweek
— Functionlastdayofweek(dt::TimeType) -> TimeType
dt
'yi haftasının Pazar gününe ayarlar.
Örnekler
julia> lastdayofweek(DateTime("1996-01-05T12:30:00"))
1996-01-07T00:00:00
Dates.firstdayofmonth
— Functionfirstdayofmonth(dt::TimeType) -> TimeType
dt
'yi ayının ilk gününe ayarlar.
Örnekler
julia> firstdayofmonth(DateTime("1996-05-20"))
1996-05-01T00:00:00
Dates.lastdayofmonth
— Functionlastdayofmonth(dt::TimeType) -> TimeType
dt
'yi ayının son gününe ayarlar.
Örnekler
julia> lastdayofmonth(DateTime("1996-05-20"))
1996-05-31T00:00:00
Dates.firstdayofyear
— Functionfirstdayofyear(dt::TimeType) -> TimeType
dt
'yi yılının ilk gününe ayarlar.
Örnekler
julia> firstdayofyear(DateTime("1996-05-20"))
1996-01-01T00:00:00
Dates.lastdayofyear
— Functionlastdayofyear(dt::TimeType) -> TimeType
dt
'yi yılının son gününe ayarlar.
Örnekler
julia> lastdayofyear(DateTime("1996-05-20"))
1996-12-31T00:00:00
Dates.firstdayofquarter
— Functionfirstdayofquarter(dt::TimeType) -> TimeType
dt
'yi çeyreğinin ilk gününe ayarlar.
Örnekler
julia> firstdayofquarter(DateTime("1996-05-20"))
1996-04-01T00:00:00
julia> firstdayofquarter(DateTime("1996-08-20"))
1996-07-01T00:00:00
Dates.lastdayofquarter
— Functionlastdayofquarter(dt::TimeType) -> TimeType
dt
'yi çeyreğinin son gününe ayarlar.
Örnekler
julia> lastdayofquarter(DateTime("1996-05-20"))
1996-06-30T00:00:00
julia> lastdayofquarter(DateTime("1996-08-20"))
1996-09-30T00:00:00
Dates.tonext
— Methodtonext(dt::TimeType, dow::Int; same::Bool=false) -> TimeType
dt
'yi dow
ile ilgili olan bir sonraki haftanın gününe ayarlar; burada 1 = Pazartesi, 2 = Salı, vb.
same=true
olarak ayarlandığında, mevcut dt
'nin bir sonraki dow
olarak kabul edilmesine izin verir ve ayarlama yapılmaz.
Dates.toprev
— Methodtoprev(dt::TimeType, dow::Int; same::Bool=false) -> TimeType
dt
'yi dow
ile ilgili önceki haftanın gününe ayarlar; burada 1 = Pazartesi, 2 = Salı, vb.
same=true
olarak ayarlandığında, mevcut dt
önceki dow
olarak kabul edilir ve ayarlama yapılmaz.
Dates.tofirst
— Functiontofirst(dt::TimeType, dow::Int; of=Month) -> TimeType
dt
'yi ayının ilk dow
'una ayarlar. Alternatif olarak, of=Year
ayarlanırsa, yılın ilk dow
'una ayarlanır.
Dates.tolast
— Functiontolast(dt::TimeType, dow::Int; of=Month) -> TimeType
dt
'yi ayının son dow
'una ayarlar. Alternatif olarak, of=Year
ayarlanırsa, yılın son dow
'una ayarlanır.
Dates.tonext
— Methodtonext(func::Function, dt::TimeType; step=Day(1), limit=10000, same=false) -> TimeType
dt
'yi, func
true
döndürene kadar en fazla limit
iterasyon ile step
artışları yaparak ayarlar. func
, tek bir TimeType
argümanı almalı ve bir Bool
döndürmelidir. same
, dt
'nin func
'u tatmin etmede dikkate alınmasına izin verir.
Dates.toprev
— Methodtoprev(func::Function, dt::TimeType; step=Day(-1), limit=10000, same=false) -> TimeType
dt
'yi, func
true
döndürene kadar en fazla limit
iterasyon ile step
artışları yaparak ayarlar. func
, tek bir TimeType
argümanı almalı ve bir Bool
döndürmelidir. same
, dt
'nin func
'u tatmin etmede dikkate alınmasına izin verir.
Periods
Dates.Period
— MethodYıl(v)
Çeyrek(v)
Ay(v)
Hafta(v)
Gün(v)
Saat(v)
Dakika(v)
Saniye(v)
Milisaniye(v)
Mikrosaniye(v)
Nanisaniye(v)
Verilen v
değeri ile bir Period
türü oluşturun. Girdi, Int64
türüne kayıpsız bir şekilde dönüştürülebilir olmalıdır.
Dates.CompoundPeriod
— MethodCompoundPeriod(periods) -> CompoundPeriod
Bir Period
'lerin Vector
'ından bir CompoundPeriod
oluşturur. Aynı türdeki tüm Period
'ler bir araya getirilecektir.
Örnekler
julia> Dates.CompoundPeriod(Dates.Hour(12), Dates.Hour(13))
25 saat
julia> Dates.CompoundPeriod(Dates.Hour(-1), Dates.Minute(1))
-1 saat, 1 dakika
julia> Dates.CompoundPeriod(Dates.Month(1), Dates.Week(-2))
1 ay, -2 hafta
julia> Dates.CompoundPeriod(Dates.Minute(50000))
50000 dakika
Dates.canonicalize
— Functioncanonicalize(::CompoundPeriod) -> CompoundPeriod
CompoundPeriod
'ı aşağıdaki kuralları uygulayarak kanonik formuna indirger:
- Yeterince büyük olan herhangi bir
Period
, daha kaba birPeriod
tarafından kısmen temsil edilebiliyorsa, birden fazlaPeriod
'a bölünecektir (örneğin,Hour(30)
Day(1) + Hour(6)
haline gelir) - Zıt işaretlere sahip
Period
'lar mümkün olduğunda birleştirilecektir (örneğin,Hour(1) - Day(1)
-Hour(23)
haline gelir)
Örnekler
julia> canonicalize(Dates.CompoundPeriod(Dates.Hour(12), Dates.Hour(13)))
1 gün, 1 saat
julia> canonicalize(Dates.CompoundPeriod(Dates.Hour(-1), Dates.Minute(1)))
-59 dakika
julia> canonicalize(Dates.CompoundPeriod(Dates.Month(1), Dates.Week(-2)))
1 ay, -2 hafta
julia> canonicalize(Dates.CompoundPeriod(Dates.Minute(50000)))
4 hafta, 6 gün, 17 saat, 20 dakika
Dates.value
— FunctionDates.value(x::Period) -> Int64
Verilen bir dönem için, o döneme karşılık gelen değeri döndürür. Örneğin, value(Millisecond(10))
10'u bir tamsayı olarak döndürür.
Dates.default
— Functiondefault(p::Period) -> Period
Girdi Periyodu için mantıklı bir "varsayılan" değer döndürmek için Yıl, Ay ve Gün için T(1)
ve Saat, Dakika, Saniye ve Milisaniye için T(0)
döndürün.
Dates.periods
— FunctionDates.periods(::CompoundPeriod) -> Vector{Period}
Verilen CompoundPeriod
'i oluşturan Period
lerin Vector
'ını döndürür.
Bu fonksiyon Julia 1.7 veya daha yenisini gerektirir.
Rounding Functions
Tarih
ve TarihSaat
değerleri, floor
, ceil
veya round
ile belirli bir çözünürlüğe (örneğin, 1 ay veya 15 dakika) yuvarlanabilir.
Base.floor
— Methodfloor(dt::TimeType, p::Period) -> TimeType
dt
'ye p
çözünürlüğünde eşit veya daha küçük en yakın Date
veya DateTime
değerini döndürür.
Kolaylık olması açısından, p
bir değer yerine bir tür de olabilir: floor(dt, Dates.Hour)
ifadesi floor(dt, Dates.Hour(1))
için bir kısayoldur.
julia> floor(Date(1985, 8, 16), Month)
1985-08-01
julia> floor(DateTime(2013, 2, 13, 0, 31, 20), Minute(15))
2013-02-13T00:30:00
julia> floor(DateTime(2016, 8, 6, 12, 0, 0), Day)
2016-08-06T00:00:00
Base.ceil
— Methodceil(dt::TimeType, p::Period) -> TimeType
dt
'ye en yakın Date
veya DateTime
'ı p
çözünürlüğünde büyük veya eşit olarak döndürür.
Kolaylık olması açısından, p
bir değer yerine bir tür olabilir: ceil(dt, Dates.Hour)
ifadesi ceil(dt, Dates.Hour(1))
için bir kısayoldur.
julia> ceil(Date(1985, 8, 16), Month)
1985-09-01
julia> ceil(DateTime(2013, 2, 13, 0, 31, 20), Minute(15))
2013-02-13T00:45:00
julia> ceil(DateTime(2016, 8, 6, 12, 0, 0), Day)
2016-08-07T00:00:00
Base.round
— Methodround(dt::TimeType, p::Period, [r::RoundingMode]) -> TimeType
dt
'ye en yakın Date
veya DateTime
'ı p
çözünürlüğünde döndürür. Varsayılan olarak (RoundNearestTiesUp
), bağlar (örneğin, 9:30'u en yakın saate yuvarlama) yukarı yuvarlanacaktır.
Kolaylık olması açısından, p
bir değer yerine bir tür olabilir: round(dt, Dates.Hour)
ifadesi round(dt, Dates.Hour(1))
için bir kısayoldur.
julia> round(Date(1985, 8, 16), Month)
1985-08-01
julia> round(DateTime(2013, 2, 13, 0, 31, 20), Minute(15))
2013-02-13T00:30:00
julia> round(DateTime(2016, 8, 6, 12, 0, 0), Day)
2016-08-07T00:00:00
round(::TimeType, ::Period, ::RoundingMode)
için geçerli yuvarlama modları RoundNearestTiesUp
(varsayılan), RoundDown
(floor
) ve RoundUp
(ceil
)'dir.
Çoğu Period
değeri, belirli bir çözünürlüğe yuvarlanabilir:
Base.floor
— Methodfloor(x::Period, precision::T) where T <: Union{TimePeriod, Week, Day} -> T
x
'i precision
'ın en yakın katına yuvarlayın. Eğer x
ve precision
farklı Period
alt türleri ise, dönen değer precision
ile aynı türde olacaktır.
Kolaylık olması açısından, precision
bir değer yerine bir tür olabilir: floor(x, Dates.Hour)
ifadesi floor(x, Dates.Hour(1))
için bir kısayoldur.
julia> floor(Day(16), Week)
2 weeks
julia> floor(Minute(44), Minute(15))
30 minutes
julia> floor(Hour(36), Day)
1 day
Month
veya Year
gibi bir precision
'a yuvarlama desteklenmemektedir, çünkü bu Period
'ler tutarsız uzunluktadır.
Base.ceil
— Methodceil(x::Period, precision::T) where T <: Union{TimePeriod, Week, Day} -> T
x
'i precision
'ın en yakın katına yuvarlayın. Eğer x
ve precision
farklı Period
alt türleri ise, dönen değer precision
ile aynı türde olacaktır.
Kolaylık olması açısından, precision
bir değer yerine bir tür olabilir: ceil(x, Dates.Hour)
ifadesi ceil(x, Dates.Hour(1))
için bir kısayoldur.
julia> ceil(Day(16), Week)
3 weeks
julia> ceil(Minute(44), Minute(15))
45 minutes
julia> ceil(Hour(36), Day)
2 days
Month
veya Year
'ler için bir precision
ile yuvarlama desteklenmemektedir, çünkü bu Period
'ler tutarsız uzunluktadır.
Base.round
— Methodround(x::Period, precision::T, [r::RoundingMode]) where T <: Union{TimePeriod, Week, Day} -> T
x
'i precision
'a en yakın katına yuvarlayın. Eğer x
ve precision
farklı Period
alt türleri ise, dönen değer precision
ile aynı türde olacaktır. Varsayılan olarak (RoundNearestTiesUp
), bağlar (örneğin, 90 dakikayı en yakın saate yuvarlamak) yukarı yuvarlanacaktır.
Kolaylık olması açısından, precision
bir değer yerine bir tür olabilir: round(x, Dates.Hour)
ifadesi round(x, Dates.Hour(1))
için bir kısayoldur.
julia> round(Day(16), Week)
2 weeks
julia> round(Minute(44), Minute(15))
45 minutes
julia> round(Hour(36), Day)
2 days
round(::Period, ::T, ::RoundingMode)
için geçerli yuvarlama modları RoundNearestTiesUp
(varsayılan), RoundDown
(floor
) ve RoundUp
(ceil
)'dir.
Month
veya Year
'lar için bir precision
'a yuvarlama desteklenmemektedir, çünkü bu Period
'ler tutarsız uzunluktadır.
Aşağıdaki fonksiyonlar dışa aktarılmamıştır:
Dates.floorceil
— Functionfloorceil(dt::TimeType, p::Period) -> (TimeType, TimeType)
Bir Date
veya DateTime
'in p
çözünürlüğündeki floor
ve ceil
değerlerini aynı anda döndürür. Hem floor
hem de ceil
'i ayrı ayrı çağırmaktan daha verimlidir.
floorceil(x::Period, precision::T) where T <: Union{TimePeriod, Week, Day} -> (T, T)
Aynı anda Period
'ün p
çözünürlüğündeki floor
ve ceil
değerlerini döndürür. Hem floor
hem de ceil
'i ayrı ayrı çağırmaktan daha verimlidir.
Dates.epochdays2date
— Functionepochdays2date(günler) -> Tarih
Rounding epoch'tan (0000-01-01T00:00:00
) itibaren geçen gün sayısını alır ve karşılık gelen Tarih
'i döner.
Dates.epochms2datetime
— Functionepochms2datetime(milisaniye) -> TarihZaman
Rounding epoch'tan ( 0000-01-01T00:00:00
) itibaren geçen milisaniye sayısını alır ve karşılık gelen TarihZaman
'ı döner.
Dates.date2epochdays
— Functiondate2epochdays(dt::Date) -> Int64
Verilen Date
'i alır ve yuvarlama epoch'undan (0000-01-01T00:00:00
) itibaren geçen gün sayısını bir Int64
olarak döner.
Dates.datetime2epochms
— Functiondatetime2epochms(dt::DateTime) -> Int64
Verilen DateTime
'ı alır ve yuvarlama epoch'undan (0000-01-01T00:00:00
) itibaren geçen milisaniye sayısını Int64
olarak döner.
Conversion Functions
Dates.today
— Functiontoday() -> Date
now()
'un tarih kısmını döndürür.
Dates.unix2datetime
— Functionunix2datetime(x) -> DateTime
Unix epoch 1970-01-01T00:00:00
'dan itibaren geçen saniye sayısını alır ve karşılık gelen DateTime
'a dönüştürür.
Dates.datetime2unix
— Functiondatetime2unix(dt::DateTime) -> Float64
Verilen DateTime
'ı alır ve unix epoch'u 1970-01-01T00:00:00
'dan itibaren geçen saniye sayısını Float64
olarak döner.
Dates.julian2datetime
— Functionjulian2datetime(julian_days) -> DateTime
Julian takviminden epoch -4713-11-24T12:00:00
'dan itibaren geçen gün sayısını alır ve karşılık gelen DateTime
'ı döner.
Dates.datetime2julian
— Functiondatetime2julian(dt::DateTime) -> Float64
Verilen DateTime
'ı alır ve Julian epoch -4713-11-24T12:00:00
'dan bu yana geçen Julian takvim günlerinin sayısını Float64
olarak döner.
Dates.rata2datetime
— Functionrata2datetime(günler) -> DateTime
Epoch 0000-12-31T00:00:00
'dan itibaren geçen Rata Die gün sayısını alır ve karşılık gelen DateTime
'ı döndürür.
Dates.datetime2rata
— Functiondatetime2rata(dt::TimeType) -> Int64
Verilen Date
veya DateTime
'dan itibaren epoch'tan beri geçen Rata Die günlerinin sayısını döndürür.
Constants
Haftanın Günleri:
Variable | Abbr. | Value (Int) |
---|---|---|
Monday | Mon | 1 |
Tuesday | Tue | 2 |
Wednesday | Wed | 3 |
Thursday | Thu | 4 |
Friday | Fri | 5 |
Saturday | Sat | 6 |
Sunday | Sun | 7 |
Yılın Ayları:
Variable | Abbr. | Value (Int) |
---|---|---|
January | Jan | 1 |
February | Feb | 2 |
March | Mar | 3 |
April | Apr | 4 |
May | May | 5 |
June | Jun | 6 |
July | Jul | 7 |
August | Aug | 8 |
September | Sep | 9 |
October | Oct | 10 |
November | Nov | 11 |
December | Dec | 12 |
Common Date Formatters
Dates.ISODateTimeFormat
— ConstantDates.ISODateTimeFormat
Tarih ve saat için ISO8601 formatlamasını açıklar. Bu, bir DateTime
'ın Dates.format
için varsayılan değerdir.
Örnekler
julia> Dates.format(DateTime(2018, 8, 8, 12, 0, 43, 1), ISODateTimeFormat)
"2018-08-08T12:00:43.001"
Dates.ISODateFormat
— ConstantDates.ISODateFormat
Bir tarihin ISO8601 formatlamasını açıklar. Bu, bir Date
için Dates.format
'ın varsayılan değeridir.
Örnekler
julia> Dates.format(Date(2018, 8, 8), ISODateFormat)
"2018-08-08"
Dates.ISOTimeFormat
— ConstantDates.ISOTimeFormat
Zaman için ISO8601 formatlamasını açıklar. Bu, bir Time
'ın Dates.format
için varsayılan değeridir.
Örnekler
julia> Dates.format(Time(12, 0, 43, 1), ISOTimeFormat)
"12:00:43.001"
Dates.RFC1123Format
— ConstantDates.RFC1123Format
Tarih ve saat için RFC1123 formatlamasını açıklar.
Örnekler
julia> Dates.format(DateTime(2018, 8, 8, 12, 0, 43, 1), RFC1123Format)
"Çar, 08 Ağu 2018 12:00:43"
- 1The notion of the UT second is actually quite fundamental. There are basically two different notions of time generally accepted, one based on the physical rotation of the earth (one full rotation = 1 day), the other based on the SI second (a fixed, constant value). These are radically different! Think about it, a "UT second", as defined relative to the rotation of the earth, may have a different absolute length depending on the day! Anyway, the fact that
Date
andDateTime
are based on UT seconds is a simplifying, yet honest assumption so that things like leap seconds and all their complexity can be avoided. This basis of time is formally called UT or UT1. Basing types on the UT second basically means that every minute has 60 seconds and every day has 24 hours and leads to more natural calculations when working with calendar dates.