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

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ığı TimeType4d61726b646f776e2e436f64652822222c2022726f756e642229_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.PeriodType
Dö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.

source
Dates.CompoundPeriodType
Bileş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.

source
Dates.InstantType
Instant

Instant türleri, bir epoch'tan başlayarak sürekli zaman çizgileri olarak zamanın tam sayı tabanlı, makine temsillerini temsil eder.

source
Dates.UTInstantType
UTInstant{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.

source
Dates.TimeTypeType
TimeType

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.

source
Dates.DateTimeType
DateTime

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
source
Dates.DateType
Tarih

Tarih, bir UTInstant{Gün} sarmalar ve onu proleptik Gregoryen takvimine göre yorumlar.

source
Dates.TimeType
Zaman

Zaman, bir Nanosecond'ı sarar ve 24 saatlik bir günde belirli bir anı temsil eder.

source
Dates.TimeZoneType
Zaman 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.

source
Dates.UTCType
UTC

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.

source

Dates Functions

Dates.DateTimeMethod
DateTime(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.

source
Dates.DateTimeMethod
DateTime(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.

source
Dates.DateTimeMethod
DateTime(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:
[...]
source
Dates.DateTimeMethod
DateTime(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.

source
Dates.DateTimeMethod
DateTime(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).

Not

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
source
Dates.formatMethod
format(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ÖrneklerAçıklama
y6Sabit genişlikte sayısal yıl
Y1996Minimum genişlikte sayısal yıl
m1, 12Minimum genişlikte sayısal ay
uJanlocale'a göre 3 karaktere kısaltılmış ay adı
UJanuarylocale anahtar kelimesine göre tam ay adı
d1, 31Minimum genişlikte ayın günü
H0, 23Minimum genişlikte saat (24 saatlik saat)
M0, 59Minimum genişlikte dakika
S0, 59Minimum genişlikte saniye
s000, 500Minimum genişlikte 3 haneli milisaniye
eMon, TueKısaltılmış hafta günleri
EMondayHaftanı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.

source
Dates.DateFormatType
DateFormat(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:

KodEşleşirAçıklama
Y1996, 961996, 0096 yılını döndürür
y1996, 96parse üzerinde Y ile aynı ancak format üzerinde fazla basamakları atar
m1, 011 veya 2 basamaklı ayları eşleştirir
uOcalocale anahtar kelimesine göre kısaltılmış ayları eşleştirir
UOcaklocale anahtar kelimesine göre tam ay adlarını eşleştirir
d1, 011 veya 2 basamaklı günleri eşleştirir
H00Saatleri (24 saatlik saat) eşleştirir
I0012 saatlik saat ile saatleri çıkarmak için
M00Dakikaları eşleştirir
S00Saniyeleri eşleştirir
s.500Milisaniyeleri eşleştirir
ePaz, SalKısaltılmış haftanın günlerini eşleştirir
EPazartesiHaftanın günlerinin tam adını eşleştirir
pAMAM/PM'yi (büyük/küçük harf duyarsız) eşleştirir
yyyymmdd19960101Sabit 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.

source
Dates.@dateformat_strMacro
dateformat"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.

source
Dates.DateTimeMethod
DateTime(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.

source
Dates.DateMethod
Date(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.

source
Dates.DateMethod
Date(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.

source
Dates.DateMethod
Date(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:
[...]
source
Dates.DateMethod
Date(dt::DateTime) -> Date

Bir DateTimeDate'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.

source
Dates.DateMethod
Date(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).

Not

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
source
Dates.DateMethod
Date(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.

source
Dates.TimeMethod
Zaman(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.

source
Dates.TimeMethod
Time(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.

source
Dates.TimeMethod
Time(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:
[...]
source
Dates.TimeMethod
Time(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.

source
Dates.TimeMethod
Time(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).

Not

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
source
Dates.TimeMethod
Time(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.

source
Dates.nowMethod
now() -> DateTime

Kullanıcının sistem saatine ve sistem saat dilimi yerel ayarına karşılık gelen bir DateTime döndürür.

source
Dates.nowMethod
now(::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
source
Base.epsMethod
eps(::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
source

Accessor Functions

Dates.weekFunction
week(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
source
Dates.dayFunction
day(dt::TimeType) -> Int64

Bir Date veya DateTime'ın ayın günü olarak bir Int64 döner.

source
Dates.hourFunction
hour(dt::DateTime) -> Int64

Bir DateTime'in günündeki saatini Int64 olarak döndürür.

source
hour(t::Time) -> Int64

Bir Time'ın saatini Int64 olarak döndürür.

source
Dates.minuteFunction
minute(dt::DateTime) -> Int64

Bir DateTime'in dakikasını Int64 olarak döndürür.

source
minute(t::Time) -> Int64

Bir Time'ın dakikası Int64 olarak.

source
Dates.YearMethod
Year(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.

source
Dates.MonthMethod
Month(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.

source
Dates.WeekMethod
Week(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.

source
Dates.DayMethod
Day(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.

source
Dates.HourMethod
Hour(dt::DateTime) -> Hour

Bir DateTime'in saat kısmı Hour olarak.

source
Dates.MinuteMethod
Minute(dt::DateTime) -> Minute

Bir DateTime'ın dakika kısmı Minute olarak.

source
Dates.SecondMethod
Second(dt::DateTime) -> Second

Bir DateTime'ın ikinci kısmı Second olarak.

source
Dates.MillisecondMethod
Millisecond(dt::DateTime) -> Millisecond

Bir DateTime nesnesinin milisaniye kısmı Millisecond olarak.

source
Dates.MicrosecondMethod
Microsecond(dt::Time) -> Microsecond

Bir Zamanın mikro saniye kısmı Microsecond olarak.

source
Dates.NanosecondMethod
Nanosecond(dt::Time) -> Nanosecond

Bir Zamanın nanosecond kısmı Nanosecond olarak.

source
Dates.yearmonthFunction
yearmonth(dt::TimeType) -> (Int64, Int64)

Bir Date veya DateTime'ın yıl ve ay kısımlarını aynı anda döndürür.

source
Dates.monthdayFunction
monthday(dt::TimeType) -> (Int64, Int64)

Bir Date veya DateTime'ın ay ve gün kısımlarını aynı anda döndürür.

source
Dates.yearmonthdayFunction
yearmonthday(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.

source

Query Functions

Dates.daynameFunction
dayname(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"
source
Dates.dayabbrFunction
dayabbr(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"
source
Dates.dayofweekFunction
dayofweek(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
source
Dates.dayofmonthFunction
dayofmonth(dt::TimeType) -> Int64

Bir Date veya DateTime'ın ay içindeki günü Int64 olarak döndürür.

source
Dates.dayofweekofmonthFunction
dayofweekofmonth(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
source
Dates.daysofweekinmonthFunction
daysofweekinmonth(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
source
Dates.monthnameFunction
monthname(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"
source
Dates.monthabbrFunction
monthabbr(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"
source
Dates.daysinmonthFunction
daysinmonth(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
source
Dates.isleapyearFunction
isleapyear(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
source
Dates.dayofyearFunction
dayofyear(dt::TimeType) -> Int

dt için yılın gününü döndürür; 1 Ocak 1. gün olarak kabul edilir.

source
Dates.daysinyearFunction
daysinyear(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
source
Dates.quarterofyearFunction
quarterofyear(dt::TimeType) -> Int

dt'nin bulunduğu çeyreği döndürür. Değer aralığı 1:4'tür.

source
Dates.dayofquarterFunction
dayofquarter(dt::TimeType) -> Int

dt'nin mevcut çeyreğindeki günü döndürür. Değer aralığı 1:92'dir.

source

Adjuster Functions

Base.truncMethod
trunc(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
source
Dates.firstdayofweekFunction
firstdayofweek(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
source
Dates.lastdayofweekFunction
lastdayofweek(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
source
Dates.firstdayofmonthFunction
firstdayofmonth(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
source
Dates.lastdayofmonthFunction
lastdayofmonth(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
source
Dates.firstdayofyearFunction
firstdayofyear(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
source
Dates.lastdayofyearFunction
lastdayofyear(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
source
Dates.firstdayofquarterFunction
firstdayofquarter(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
source
Dates.lastdayofquarterFunction
lastdayofquarter(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
source
Dates.tonextMethod
tonext(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.

source
Dates.toprevMethod
toprev(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.

source
Dates.tofirstFunction
tofirst(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.

source
Dates.tolastFunction
tolast(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.

source
Dates.tonextMethod
tonext(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.

source
Dates.toprevMethod
toprev(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.

source

Periods

Dates.PeriodMethod
Yı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.

source
Dates.CompoundPeriodMethod
CompoundPeriod(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
source
Dates.canonicalizeFunction
canonicalize(::CompoundPeriod) -> CompoundPeriod

CompoundPeriod'ı aşağıdaki kuralları uygulayarak kanonik formuna indirger:

  • Yeterince büyük olan herhangi bir Period, daha kaba bir Period tarafından kısmen temsil edilebiliyorsa, birden fazla Period'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
source
Dates.valueFunction
Dates.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.

source
Dates.defaultFunction
default(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.

source
Dates.periodsFunction
Dates.periods(::CompoundPeriod) -> Vector{Period}

Verilen CompoundPeriod'i oluşturan Periodlerin Vector'ını döndürür.

Julia 1.7

Bu fonksiyon Julia 1.7 veya daha yenisini gerektirir.

source

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.floorMethod
floor(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
source
Base.ceilMethod
ceil(dt::TimeType, p::Period) -> TimeType

dt'ye en yakın Date veya DateTimep çö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
source
Base.roundMethod
round(dt::TimeType, p::Period, [r::RoundingMode]) -> TimeType

dt'ye en yakın Date veya DateTimep çö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.

source

Çoğu Period değeri, belirli bir çözünürlüğe yuvarlanabilir:

Base.floorMethod
floor(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.

source
Base.ceilMethod
ceil(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.

source
Base.roundMethod
round(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.

source

Aşağıdaki fonksiyonlar dışa aktarılmamıştır:

Dates.floorceilFunction
floorceil(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.

source
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.

source
Dates.epochdays2dateFunction
epochdays2date(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.

source
Dates.epochms2datetimeFunction
epochms2datetime(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.

source
Dates.date2epochdaysFunction
date2epochdays(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.

source
Dates.datetime2epochmsFunction
datetime2epochms(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.

source

Conversion Functions

Dates.unix2datetimeFunction
unix2datetime(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.

source
Dates.datetime2unixFunction
datetime2unix(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.

source
Dates.julian2datetimeFunction
julian2datetime(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.

source
Dates.datetime2julianFunction
datetime2julian(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.

source
Dates.rata2datetimeFunction
rata2datetime(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.

source
Dates.datetime2rataFunction
datetime2rata(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.

source

Constants

Haftanın Günleri:

VariableAbbr.Value (Int)
MondayMon1
TuesdayTue2
WednesdayWed3
ThursdayThu4
FridayFri5
SaturdaySat6
SundaySun7

Yılın Ayları:

VariableAbbr.Value (Int)
JanuaryJan1
FebruaryFeb2
MarchMar3
AprilApr4
MayMay5
JuneJun6
JulyJul7
AugustAug8
SeptemberSep9
OctoberOct10
NovemberNov11
DecemberDec12

Common Date Formatters

Dates.ISODateTimeFormatConstant
Dates.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"
source
Dates.ISODateFormatConstant
Dates.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"
source
Dates.ISOTimeFormatConstant
Dates.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"
source
Dates.RFC1123FormatConstant
Dates.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"
source
  • 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 and DateTime 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.