Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DateOnly ve TimeOnly yapıları .NET 6 ile kullanıma sunulmuştur ve sırasıyla belirli bir tarihi veya saati temsil eder. .NET 6'nın öncesinde ve her zaman .NET Framework'te geliştiriciler aşağıdakilerden birini temsil etmek için DateTime türünü (veya başka bir alternatifi) kullandı:
- Tam bir tarih ve saat.
- Saati dikkate almayan bir tarih.
- Tarihi göz ardı eden bir zaman.
DateOnly
ve TimeOnly
, DateTime
türünün belirli bölümlerini temsil eden türlerdir.
DateOnly yapısı
DateOnly yapısı, saat olmadan belirli bir tarihi temsil eder. Saat bileşeni olmadığından, günün başından sonuna kadar olan bir tarihi temsil eder. Bu yapı doğum tarihi, yıl dönümü tarihi veya işle ilgili tarihler gibi belirli tarihleri depolamak için idealdir.
Zaman bileşenini yoksayarak DateTime
kullanabilirsiniz ancak DateOnly
üzerinden DateTime
kullanmanın birkaç avantajı vardır:
DateTime
yapısı bir saat dilimine göre uzaklıktaysa önceki veya sonraki güne yuvarlanabilir.DateOnly
bir saat dilimine göre kaydırılamaz ve her zaman ayarlanan tarihi temsil eder.DateTime
yapısını seri hale getirme, verilerin amacını gizleyebilecek zaman bileşenini içerir. AyrıcaDateOnly
daha az veriyi seri hale getirir.Kod SQL Server gibi bir veritabanıyla etkileşime geçtiğinde, tüm tarihler genellikle saat içermeyen
date
veri türü olarak depolanır.DateOnly
veritabanı türüyle daha iyi eşleşir.
DateOnly
, DateTime
gibi 0001-01-01 ile 9999-12-31 arasında bir aralığa sahiptir.
DateOnly
oluşturucusunda belirli bir takvim belirtebilirsiniz. Ancak, DateOnly
nesnesi, oluşturmak için hangi takvimin kullanıldığına bakılmaksızın her zaman proleptik Gregoryen takvimdeki bir tarihi temsil eder. Örneğin, tarihi İbranice takvimden oluşturabilirsiniz, ancak tarih Gregoryen'e dönüştürülür:
var hebrewCalendar = new System.Globalization.HebrewCalendar();
var theDate = new DateOnly(5776, 2, 8, hebrewCalendar); // 8 Cheshvan 5776
Console.WriteLine(theDate);
/* This example produces the following output:
*
* 10/21/2015
*/
Dim hebrewCalendar = New System.Globalization.HebrewCalendar()
Dim theDate = New DateOnly(5776, 2, 8, hebrewCalendar) ' 8 Cheshvan 5776
Console.WriteLine(theDate)
' This example produces the following output
'
' 10/21/2015
DateOnly örnekleri
DateOnly
hakkında bilgi edinmek için aşağıdaki örnekleri kullanın:
- DateTime'ı DateOnly'a Dönüştürme
- Gün, ay, yıl ekleme veya çıkarma
- DateOnly ayrıştırma ve biçimlendirme
- DateOnly Karşılaştırma
DateTime'ı DateOnly'ye Dönüştürme
Aşağıdaki kodda gösterildiği gibi DateOnly.FromDateTime türünden DateOnly
türü oluşturmak için DateTime
statik yöntemini kullanın:
var today = DateOnly.FromDateTime(DateTime.Now);
Console.WriteLine($"Today is {today}");
/* This example produces output similar to the following:
*
* Today is 12/28/2022
*/
Dim today = DateOnly.FromDateTime(DateTime.Now)
Console.WriteLine($"Today is {today}")
' This example produces output similar to the following
'
' Today is 12/28/2022
Gün, ay, yıl ekleme veya çıkarma
DateOnly yapısını ayarlamak için kullanılan üç yöntem vardır: AddDays, AddMonthsve AddYears. Her yöntem bir tamsayı parametresi alır ve bu ölçüme göre tarihi artırır. Negatif bir sayı sağlanırsa, tarih bu ölçümle azaltılır. Yöntemler, yapı sabit olduğundan yeni bir DateOnly
örneği döndürür.
var theDate = new DateOnly(2015, 10, 21);
var nextDay = theDate.AddDays(1);
var previousDay = theDate.AddDays(-1);
var decadeLater = theDate.AddYears(10);
var lastMonth = theDate.AddMonths(-1);
Console.WriteLine($"Date: {theDate}");
Console.WriteLine($" Next day: {nextDay}");
Console.WriteLine($" Previous day: {previousDay}");
Console.WriteLine($" Decade later: {decadeLater}");
Console.WriteLine($" Last month: {lastMonth}");
/* This example produces the following output:
*
* Date: 10/21/2015
* Next day: 10/22/2015
* Previous day: 10/20/2015
* Decade later: 10/21/2025
* Last month: 9/21/2015
*/
Dim theDate = New DateOnly(2015, 10, 21)
Dim nextDay = theDate.AddDays(1)
Dim previousDay = theDate.AddDays(-1)
Dim decadeLater = theDate.AddYears(10)
Dim lastMonth = theDate.AddMonths(-1)
Console.WriteLine($"Date: {theDate}")
Console.WriteLine($" Next day: {nextDay}")
Console.WriteLine($" Previous day: {previousDay}")
Console.WriteLine($" Decade later: {decadeLater}")
Console.WriteLine($" Last month: {lastMonth}")
' This example produces the following output
'
' Date: 10/21/2015
' Next day: 10/22/2015
' Previous day: 10/20/2015
' Decade later: 10/21/2025
' Last month: 9/21/2015
DateOnly'u ayrıştır ve biçimlendir
DateOnly, DateTime yapısı gibi bir dizeden ayrıştırılabilir. Tüm standart .NET tarih tabanlı ayrıştırma belirteçleri DateOnly
ile çalışır.
DateOnly
türünü dizeye dönüştürürken standart .NET tarih tabanlı biçimlendirme desenlerini de kullanabilirsiniz. Dizeleri biçimlendirme hakkında daha fazla bilgi için bkz. Standart tarih ve saat biçimi dizeleri.
var theDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture); // Custom format
var theDate2 = DateOnly.Parse("October 21, 2015", CultureInfo.InvariantCulture);
Console.WriteLine(theDate.ToString("m", CultureInfo.InvariantCulture)); // Month day pattern
Console.WriteLine(theDate2.ToString("o", CultureInfo.InvariantCulture)); // ISO 8601 format
Console.WriteLine(theDate2.ToLongDateString());
/* This example produces the following output:
*
* October 21
* 2015-10-21
* Wednesday, October 21, 2015
*/
Dim theDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture) ' Custom format
Dim theDate2 = DateOnly.Parse("October 21, 2015", CultureInfo.InvariantCulture)
Console.WriteLine(theDate.ToString("m", CultureInfo.InvariantCulture)) ' Month day pattern
Console.WriteLine(theDate2.ToString("o", CultureInfo.InvariantCulture)) ' ISO 8601 format
Console.WriteLine(theDate2.ToLongDateString())
' This example produces the following output
'
' October 21
' 2015-10-21
' Wednesday, October 21, 2015
DateOnly Karşılaştırması
DateOnly diğer örneklerle karşılaştırılabilir. Örneğin, bir tarihin başka bir tarihten önce mi yoksa sonra mı olduğunu veya bugünün belirli bir tarihle eşleşip eşleşmediğini de kontrol edebilirsiniz.
var theDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture); // Custom format
var theDate2 = DateOnly.Parse("October 21, 2015", CultureInfo.InvariantCulture);
var dateLater = theDate.AddMonths(6);
var dateBefore = theDate.AddDays(-10);
Console.WriteLine($"Consider {theDate}...");
Console.WriteLine($" Is '{nameof(theDate2)}' equal? {theDate == theDate2}");
Console.WriteLine($" Is {dateLater} after? {dateLater > theDate} ");
Console.WriteLine($" Is {dateLater} before? {dateLater < theDate} ");
Console.WriteLine($" Is {dateBefore} after? {dateBefore > theDate} ");
Console.WriteLine($" Is {dateBefore} before? {dateBefore < theDate} ");
/* This example produces the following output:
*
* Consider 10/21/2015
* Is 'theDate2' equal? True
* Is 4/21/2016 after? True
* Is 4/21/2016 before? False
* Is 10/11/2015 after? False
* Is 10/11/2015 before? True
*/
Dim theDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture) ' Custom format
Dim theDate2 = DateOnly.Parse("October 21, 2015", CultureInfo.InvariantCulture)
Dim dateLater = theDate.AddMonths(6)
Dim dateBefore = theDate.AddDays(-10)
Console.WriteLine($"Consider {theDate}...")
Console.WriteLine($" Is '{NameOf(theDate2)}' equal? {theDate = theDate2}")
Console.WriteLine($" Is {dateLater} after? {dateLater > theDate} ")
Console.WriteLine($" Is {dateLater} before? {dateLater < theDate} ")
Console.WriteLine($" Is {dateBefore} after? {dateBefore > theDate} ")
Console.WriteLine($" Is {dateBefore} before? {dateBefore < theDate} ")
' This example produces the following output
'
' Consider 10/21/2015
' Is 'theDate2' equal? True
' Is 4/21/2016 after? True
' Is 4/21/2016 before? False
' Is 10/11/2015 after? False
' Is 10/11/2015 before? True
TimeOnly yapısı
TimeOnly yapısı, günlük bir çalar saat veya her gün öğle yemeği yediğiniz saati gibi, günün belirli bir saatini temsil eder.
TimeOnly
, günün belirli bir saati olan 00:00:00.00000000 - 23:59:59.99999999aralığıyla sınırlıdır.
TimeOnly
türü kullanılmadan önce, programcılar genellikle belirli bir saati temsil etmek için DateTime türünü veya TimeSpan türünü kullanır. Ancak, tarihsiz bir saatin benzetimini yapmak için bu yapıların kullanılması, TimeOnly
çözen bazı sorunlara yol açabilir:
TimeSpan
, kronometreyle ölçülen süre gibi geçen süreyi temsil eder. Üst aralık 29.000 yıldan fazladır ve değeri, zamanda geriye doğru hareket ettiğini göstermek için negatif olabilir. NegatifTimeSpan
günün belirli bir saatini göstermez.TimeSpan
günün saati olarak kullanılıyorsa, 24 saatlik günün dışındaki bir değere yönlendirilebileceği riski vardır.TimeOnly
bu riske sahip değil. Örneğin, bir çalışanın vardiyası 18:00'de başlıyorsa ve 8 saat sürüyorsa,TimeOnly
yapısına 8 saat eklendiğinde saat 2:00'ye geçer.günün bir saati için
DateTime
kullanmak, rastgele bir tarihin saatle ilişkilendirilmesi ve daha sonra göz ardı edilmesi gerekir. Tarih olarakDateTime.MinValue
(0001-01-01) seçmek yaygın bir uygulamadır, ancak saatlerDateTime
değerinden çıkarılırsaOutOfRange
özel durumu oluşabilir.TimeOnly
, zamanın 24 saatlik zaman çerçevesi boyunca ileri ve geri hareket etmesiyle bu soruna sahip değil.DateTime
yapısını seri hale getirme, verilerin amacını gizleyebilen tarih bileşenini içerir. AyrıcaTimeOnly
daha az veriyi seri hale getirir.
TimeOnly örnekleri
TimeOnly
hakkında bilgi edinmek için aşağıdaki örnekleri kullanın:
- DateTime'ı TimeOnly'ye Dönüştür
- Zaman ekleyin veya çıkarın
- TimeOnly öğesini ayrıştırma ve biçimlendirme
- TimeSpan ve DateTime üzerinde çalışmak
- Aritmetik işleçler ve TimeOnly karşılaştırma
DateTime'ı TimeOnly'ye Dönüştürme
Aşağıdaki kodda gösterildiği gibi TimeOnly.FromDateTime türünden TimeOnly
türü oluşturmak için DateTime
statik yöntemini kullanın:
var now = TimeOnly.FromDateTime(DateTime.Now);
Console.WriteLine($"It is {now} right now");
/* This example produces output similar to the following:
*
* It is 2:01 PM right now
*/
Dim now = TimeOnly.FromDateTime(DateTime.Now)
Console.WriteLine($"It is {now} right now")
' This example produces output similar to the following
'
' It is 2:01 PM right now
Zaman ekleme veya çıkarma
TimeOnly yapısını ayarlamak için kullanılan üç yöntem vardır: AddHours, AddMinutesve Add. Hem AddHours
hem de AddMinutes
bir tamsayı parametresi alır ve değeri buna göre ayarlar. Toplamak için pozitif bir değer ve çıkarmak için negatif bir değer kullanabilirsiniz. Yapı sabit olduğundan, yöntemler TimeOnly
için yeni bir örnek döndürür.
Add
yöntemi TimeSpan bir parametre alır ve değeri TimeOnly
değerden ekler veya çıkarır.
TimeOnly
yalnızca 24 saatlik bir dönemi temsil ettiğinden, bu üç yönteme sağlanan değerleri eklerken uygun şekilde ileri veya geri doğru yuvarlanır. Örneğin, 01:30'ı göstermek için 01:30:00
değeri kullanırsanız, o dönemden -4 saat eklerseniz, 21:30:00
(21:30)'a geri döner.
AddHours
, AddMinutes
ve Add
için yuvarlanan gün sayısını yakalayan yöntem aşırı yüklemeleri vardır.
var theTime = new TimeOnly(7, 23, 11);
var hourLater = theTime.AddHours(1);
var minutesBefore = theTime.AddMinutes(-12);
var secondsAfter = theTime.Add(TimeSpan.FromSeconds(10));
var daysLater = theTime.Add(new TimeSpan(hours: 21, minutes: 200, seconds: 83), out int wrappedDays);
var daysBehind = theTime.AddHours(-222, out int wrappedDaysFromHours);
Console.WriteLine($"Time: {theTime}");
Console.WriteLine($" Hours later: {hourLater}");
Console.WriteLine($" Minutes before: {minutesBefore}");
Console.WriteLine($" Seconds after: {secondsAfter}");
Console.WriteLine($" {daysLater} is the time, which is {wrappedDays} days later");
Console.WriteLine($" {daysBehind} is the time, which is {wrappedDaysFromHours} days prior");
/* This example produces the following output:
*
* Time: 7:23 AM
* Hours later: 8:23 AM
* Minutes before: 7:11 AM
* Seconds after: 7:23 AM
* 7:44 AM is the time, which is 1 days later
* 1:23 AM is the time, which is -9 days prior
*/
Dim wrappedDays As Integer
Dim wrappedDaysFromHours As Integer
Dim theTime = New TimeOnly(7, 23, 11)
Dim hourLater = theTime.AddHours(1)
Dim minutesBefore = theTime.AddMinutes(-12)
Dim secondsAfter = theTime.Add(TimeSpan.FromSeconds(10))
Dim daysLater = theTime.Add(New TimeSpan(hours:=21, minutes:=200, seconds:=83), wrappedDays)
Dim daysBehind = theTime.AddHours(-222, wrappedDaysFromHours)
Console.WriteLine($"Time: {theTime}")
Console.WriteLine($" Hours later: {hourLater}")
Console.WriteLine($" Minutes before: {minutesBefore}")
Console.WriteLine($" Seconds after: {secondsAfter}")
Console.WriteLine($" {daysLater} is the time, which is {wrappedDays} days later")
Console.WriteLine($" {daysBehind} is the time, which is {wrappedDaysFromHours} days prior")
' This example produces the following output
'
' Time: 7:23 AM
' Hours later: 8:23 AM
' Minutes before: 7:11 AM
' Seconds after: 7:23 AM
' 7:44 AM is the time, which is 1 days later
' 1:23 AM is the time, which is -9 days prior
TimeOnly öğesini ayrıştırma ve biçimlendirme
TimeOnly, DateTime yapısı gibi bir dizeden ayrıştırılabilir. Tüm standart .NET zamana dayalı ayrıştırma belirteçleri TimeOnly
ile çalışır.
TimeOnly
türünü dizeye dönüştürürken standart .NET tarih tabanlı biçimlendirme desenlerini de kullanabilirsiniz. Dizeleri biçimlendirme hakkında daha fazla bilgi için bkz. Standart tarih ve saat biçimi dizeleri.
var theTime = TimeOnly.ParseExact("5:00 pm", "h:mm tt", CultureInfo.InvariantCulture); // Custom format
var theTime2 = TimeOnly.Parse("17:30:25", CultureInfo.InvariantCulture);
Console.WriteLine(theTime.ToString("o", CultureInfo.InvariantCulture)); // Round-trip pattern.
Console.WriteLine(theTime2.ToString("t", CultureInfo.InvariantCulture)); // Long time format
Console.WriteLine(theTime2.ToLongTimeString());
/* This example produces the following output:
*
* 17:00:00.0000000
* 17:30
* 5:30:25 PM
*/
Dim theTime = TimeOnly.ParseExact("5:00 pm", "h:mm tt", CultureInfo.InvariantCulture) ' Custom format
Dim theTime2 = TimeOnly.Parse("17:30:25", CultureInfo.InvariantCulture)
Console.WriteLine(theTime.ToString("o", CultureInfo.InvariantCulture)) ' Round-trip pattern.
Console.WriteLine(theTime2.ToString("t", CultureInfo.InvariantCulture)) ' Long time format
Console.WriteLine(theTime2.ToLongTimeString())
' This example produces the following output
'
' 17:00:00.0000000
' 17:30
' 5:30:25 PM
DateOnly ve TimeOnly türlerini seri hale getirme
.NET 7+ ile System.Text.Json
, DateOnly ve TimeOnly türlerini serileştirmeyi ve seri durumdan kaldırmayı destekler. Aşağıdaki nesneyi göz önünde bulundurun:
sealed file record Appointment(
Guid Id,
string Description,
DateOnly Date,
TimeOnly StartTime,
TimeOnly EndTime);
Public NotInheritable Class Appointment
Public Property Id As Guid
Public Property Description As String
Public Property DateValue As DateOnly?
Public Property StartTime As TimeOnly?
Public Property EndTime As TimeOnly?
End Class
Aşağıdaki örnek bir Appointment
nesnesini serileştirir, sonuçta elde edilen JSON'ı görüntüler ve ardından Appointment
türünün yeni bir örneğine seri durumdan çıkararak geri döner. Son olarak, özgün ve yeni deserilize edilmiş örneklerin eşit olup olmadıkları karşılaştırılır ve sonuçlar konsola yazılır.
Appointment originalAppointment = new(
Id: Guid.NewGuid(),
Description: "Take dog to veterinarian.",
Date: new DateOnly(2002, 1, 13),
StartTime: new TimeOnly(5,15),
EndTime: new TimeOnly(5, 45));
string serialized = JsonSerializer.Serialize(originalAppointment);
Console.WriteLine($"Resulting JSON: {serialized}");
Appointment deserializedAppointment =
JsonSerializer.Deserialize<Appointment>(serialized)!;
bool valuesAreTheSame = originalAppointment == deserializedAppointment;
Console.WriteLine($"""
Original record has the same values as the deserialized record: {valuesAreTheSame}
""");
Dim originalAppointment As New Appointment With {
.Id = Guid.NewGuid(),
.Description = "Take dog to veterinarian.",
.DateValue = New DateOnly(2002, 1, 13),
.StartTime = New TimeOnly(5, 3, 1),
.EndTime = New TimeOnly(5, 3, 1)
}
Dim serialized As String = JsonSerializer.Serialize(originalAppointment)
Console.WriteLine($"Resulting JSON: {serialized}")
Dim deserializedAppointment As Appointment =
JsonSerializer.Deserialize(Of Appointment)(serialized)
Dim valuesAreTheSame As Boolean =
(originalAppointment.DateValue = deserializedAppointment.DateValue AndAlso
originalAppointment.StartTime = deserializedAppointment.StartTime AndAlso
originalAppointment.EndTime = deserializedAppointment.EndTime AndAlso
originalAppointment.Id = deserializedAppointment.Id AndAlso
originalAppointment.Description = deserializedAppointment.Description)
Console.WriteLine(
$"Original object has the same values as the deserialized object: {valuesAreTheSame}")
Yukarıdaki kodda:
- bir
Appointment
nesnesi örneği oluşturulur veappointment
değişkenine atanır. -
appointment
örneği JsonSerializer.Serializekullanılarak JSON olarak serileştirilir. - Sonuçta elde edilen JSON konsola yazılır.
- JSON,
Appointment
kullanılarak JsonSerializer.Deserialize türünün yeni bir örneğine deserilize edilir. - Özgün ve yeni seri durumdan çıkarılmış örneklerin eşit olup olmadıkları karşılaştırılır.
- Karşılaştırmanın sonucu konsola yazılır.
Daha fazla bilgi için bkz. .NET'te JSON serileştirme ve seriden çıkarma.
TimeSpan ve DateTime ile çalışma
TimeOnly oluşturulabilir ve bir TimeSpan'e dönüştürülebilir. Ayrıca TimeOnly
, DateTime örneğini oluşturmak veya tarih sağlandığı sürece bir TimeOnly
örneği oluşturmak için DateTime
ile kullanılabilir.
Aşağıdaki örnek, bir TimeOnly
'den TimeSpan
nesnesi oluşturur ve ardından onu geriye dönüştürür.
// TimeSpan must in the range of 00:00:00.0000000 to 23:59:59.9999999
var theTime = TimeOnly.FromTimeSpan(new TimeSpan(23, 59, 59));
var theTimeSpan = theTime.ToTimeSpan();
Console.WriteLine($"Variable '{nameof(theTime)}' is {theTime}");
Console.WriteLine($"Variable '{nameof(theTimeSpan)}' is {theTimeSpan}");
/* This example produces the following output:
*
* Variable 'theTime' is 11:59 PM
* Variable 'theTimeSpan' is 23:59:59
*/
' TimeSpan must in the range of 00:00:00.0000000 to 23:59:59.9999999
Dim theTime = TimeOnly.FromTimeSpan(New TimeSpan(23, 59, 59))
Dim theTimeSpan = theTime.ToTimeSpan()
Console.WriteLine($"Variable '{NameOf(theTime)}' is {theTime}")
Console.WriteLine($"Variable '{NameOf(theTimeSpan)}' is {theTimeSpan}")
' This example produces the following output
'
' Variable 'theTime' is 11:59 PM
' Variable 'theTimeSpan' is 23:59:59
Aşağıdaki örnek, rastgele bir tarih seçilen bir DateTime
nesnesinden TimeOnly
oluşturur:
var theTime = new TimeOnly(11, 25, 46); // 11:25 AM and 46 seconds
var theDate = new DateOnly(2015, 10, 21); // October 21, 2015
var theDateTime = theDate.ToDateTime(theTime);
var reverseTime = TimeOnly.FromDateTime(theDateTime);
Console.WriteLine($"Date only is {theDate}");
Console.WriteLine($"Time only is {theTime}");
Console.WriteLine();
Console.WriteLine($"Combined to a DateTime type, the value is {theDateTime}");
Console.WriteLine($"Converted back from DateTime, the time is {reverseTime}");
/* This example produces the following output:
*
* Date only is 10/21/2015
* Time only is 11:25 AM
*
* Combined to a DateTime type, the value is 10/21/2015 11:25:46 AM
* Converted back from DateTime, the time is 11:25 AM
*/
Dim theTime = New TimeOnly(11, 25, 46) ' 11: 25 PM And 46 seconds
Dim theDate = New DateOnly(2015, 10, 21) ' October 21, 2015
Dim theDateTime = theDate.ToDateTime(theTime)
Dim reverseTime = TimeOnly.FromDateTime(theDateTime)
Console.WriteLine($"Date only is {theDate}")
Console.WriteLine($"Time only is {theTime}")
Console.WriteLine()
Console.WriteLine($"Combined to a DateTime type, the value is {theDateTime}")
Console.WriteLine($"Converted back from DateTime, the time is {reverseTime}")
' This example produces the following output
'
' Date only is 10/21/2015
' Time only is 11:25 AM
'
' Combined to a DateTime type, the value is 10/21/2015 11:25:46 AM
' Converted back from DateTime, the time is 11:25 AM
Aritmetik işleçler ve TimeOnly karşılaştırması
İki TimeOnly örneği birbiriyle karşılaştırılabilir ve IsBetween yöntemini kullanarak bir saatin iki farklı zaman arasında olup olmadığını kontrol edebilirsiniz. bir TimeOnly
üzerinde bir toplama veya çıkarma işleci kullanıldığında, süreyi temsil eden bir TimeSpan döndürülür.
var start = new TimeOnly(10, 12, 01); // 10:12:01 AM
var end = new TimeOnly(14, 00, 53); // 02:00:53 PM
var outside = start.AddMinutes(-3);
var inside = start.AddMinutes(120);
Console.WriteLine($"Time starts at {start} and ends at {end}");
Console.WriteLine($" Is {outside} between the start and end? {outside.IsBetween(start, end)}");
Console.WriteLine($" Is {inside} between the start and end? {inside.IsBetween(start, end)}");
Console.WriteLine($" Is {start} less than {end}? {start < end}");
Console.WriteLine($" Is {start} greater than {end}? {start > end}");
Console.WriteLine($" Does {start} equal {end}? {start == end}");
Console.WriteLine($" The time between {start} and {end} is {end - start}");
/* This example produces the following output:
*
* Time starts at 10:12 AM and ends at 2:00 PM
* Is 10:09 AM between the start and end? False
* Is 12:12 PM between the start and end? True
* Is 10:12 AM less than 2:00 PM? True
* Is 10:12 AM greater than 2:00 PM? False
* Does 10:12 AM equal 2:00 PM? False
* The time between 10:12 AM and 2:00 PM is 03:48:52
*/
Dim startDate = New TimeOnly(10, 12, 1) ' 10:12:01 AM
Dim endDate = New TimeOnly(14, 0, 53) ' 02:00:53 PM
Dim outside = startDate.AddMinutes(-3)
Dim inside = startDate.AddMinutes(120)
Console.WriteLine($"Time starts at {startDate} and ends at {endDate}")
Console.WriteLine($" Is {outside} between the start and end? {outside.IsBetween(startDate, endDate)}")
Console.WriteLine($" Is {inside} between the start and end? {inside.IsBetween(startDate, endDate)}")
Console.WriteLine($" Is {startDate} less than {endDate}? {startDate < endDate}")
Console.WriteLine($" Is {startDate} greater than {endDate}? {startDate > endDate}")
Console.WriteLine($" Does {startDate} equal {endDate}? {startDate = endDate}")
Console.WriteLine($" The time between {startDate} and {endDate} is {endDate - startDate}")
' This example produces the following output
'
' Time starts at 10:12 AM And ends at 2:00 PM
' Is 10:09 AM between the start And end? False
' Is 12:12 PM between the start And end? True
' Is 10:12 AM less than 2:00 PM? True
' Is 10:12 AM greater than 2:00 PM? False
' Does 10:12 AM equal 2:00 PM? False
' The time between 10:12 AM and 2:00 PM is 03:48:52