Cara menggunakan struktur DateOnly dan TimeOnly
Struktur DateOnly dan TimeOnly diperkenalkan dengan .NET 6 dan masing-masing mewakili tanggal atau waktu tertentu. Sebelum .NET 6, dan selalu dalam .NET Framework, pengembang menggunakan DateTime jenis (atau beberapa alternatif lainnya) untuk mewakili salah satu hal berikut:
- Seluruh tanggal dan waktu.
- Tanggal, mengalihkan waktu.
- Suatu waktu, mengalihkan tanggal.
DateOnly
dan TimeOnly
merupakan jenis yang mewakili bagian tertentu dari suatu DateTime
jenis.
Struktur DateOnly
Struktur DateOnly mewakili tanggal tertentu, tanpa waktu. Karena tidak memiliki komponen waktu, itu menunjukkan tanggal dari awal hari hingga akhir hari. Struktur ini sangat ideal untuk menyimpan tanggal tertentu, seperti tanggal lahir, tanggal ulang tahun, atau tanggal terkait bisnis.
Meskipun Anda dapat menggunakan DateTime
saat mengabaikan komponen waktu, ada beberapa manfaat untuk digunakan DateOnly
melalui DateTime
:
Struktur
DateTime
dapat bergulir ke hari sebelumnya atau berikutnya jika diimbangi oleh zona waktu.DateOnly
tidak dapat diimbangi oleh zona waktu, dan selalu mewakili tanggal yang ditetapkan.Menserialisasikan
DateTime
struktur mencakup komponen waktu, yang dapat mengaburkan niat data. Selain itu,DateOnly
menserialisasikan lebih sedikit data.Saat kode berinteraksi dengan database, seperti SQL Server, seluruh tanggal umumnya disimpan sebagai
date
jenis data, yang tidak menyertakan waktu.DateOnly
mencocokkan jenis database dengan lebih baik.
DateOnly
memiliki rentang dari 0001-01-01 hingga 9999-12-31, sama seperti DateTime
. Anda dapat menentukan kalender tertentu di DateOnly
konstruktor. Namun, objek DateOnly
selalu mewakili tanggal dalam kalender Gregorian proleptik, terlepas dari kalender mana yang digunakan untuk membangunnya. Misalnya, Anda dapat membuat tanggal dari kalender Ibrani, tetapi tanggal dikonversi ke Gregorian:
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
Contoh DateOnly
Gunakan contoh berikut untuk mempelajari tentang DateOnly
:
- Mengonversi DateTime ke DateOnly
- Menambahkan atau mengurangi hari, bulan, tahun
- Mengurai dan memformat DateOnly
- Bandingkan DateOnly
Mengonversi DateTime ke DateOnly
DateOnly.FromDateTime Gunakan metode statis untuk membuat DateOnly
jenis dari jenis, seperti yang DateTime
ditunjukkan dalam kode berikut:
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
Menambahkan atau mengurangi hari, bulan, tahun
Ada tiga metode yang digunakan untuk menyesuaikan DateOnly struktur: AddDays, , AddMonthsdan AddYears. Setiap metode mengambil parameter bilangan bulat, dan meningkatkan tanggal dengan pengukuran tersebut. Jika angka negatif disediakan, tanggal dikurangi dengan pengukuran tersebut. Metode mengembalikan instans DateOnly
baru , karena strukturnya tidak dapat diubah.
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
Mengurai dan memformat DateOnly
DateOnly dapat diurai dari string, sama seperti strukturnya DateTime . Semua token penguraian berbasis tanggal .NET standar berfungsi dengan DateOnly
. Saat mengonversi DateOnly
jenis menjadi string, Anda juga dapat menggunakan pola pemformatan berbasis tanggal .NET standar. Untuk informasi selengkapnya tentang pemformatan string, lihat String format tanggal dan waktu standar.
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
Bandingkan DateOnly
DateOnly dapat dibandingkan dengan instans lain. Misalnya, Anda dapat memeriksa apakah tanggal sebelum atau sesudah tanggal lain, atau apakah tanggal hari ini cocok dengan tanggal tertentu.
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
Struktur TimeOnly
Struktur mewakili TimeOnly nilai waktu seharian, seperti jam alarm harian atau jam berapa Anda makan siang setiap hari. TimeOnly
dibatasi pada rentang 00:00:00.0000000 - 23:59:59.9999999, waktu tertentu dalam sehari.
Sebelum jenis diperkenalkan TimeOnly
, programmer biasanya menggunakan DateTime jenis atau TimeSpan jenis untuk mewakili waktu tertentu. Namun, menggunakan struktur ini untuk mensimulasikan waktu tanpa tanggal dapat menimbulkan beberapa masalah, yang TimeOnly
menyelesaikan:
TimeSpan
mewakili waktu yang berlalu, seperti waktu yang diukur dengan stopwatch. Rentang atas lebih dari 29.000 tahun, dan nilainya bisa negatif untuk menunjukkan bergerak mundur dalam waktu. NegatifTimeSpan
tidak menunjukkan waktu tertentu dalam sehari.Jika
TimeSpan
digunakan sebagai waktu dalam sehari, ada risiko bahwa itu dapat dimanipulasi ke nilai di luar hari 24 jam.TimeOnly
tidak memiliki risiko ini. Misalnya, jika shift kerja karyawan dimulai pada pukul 18:00 dan berlangsung selama 8 jam, menambahkan 8 jam keTimeOnly
struktur digulirkan ke 2:00Menggunakan
DateTime
untuk waktu sehari mengharuskan tanggal sewenang-wenang dikaitkan dengan waktu, dan kemudian diabaikan. Praktik umum untuk memilihDateTime.MinValue
(0001-01-01) sebagai tanggal, namun, jika jam dikurangi dariDateTime
nilai,OutOfRange
pengecualian mungkin terjadi.TimeOnly
tidak memiliki masalah ini karena waktu bergulir maju dan mundur sekitar jangka waktu 24 jam.Menserialisasi
DateTime
struktur mencakup komponen tanggal, yang dapat mengaburkan niat data. Selain itu,TimeOnly
menserialisasikan lebih sedikit data.
Contoh TimeOnly
Gunakan contoh berikut untuk mempelajari tentang TimeOnly
:
- Mengonversi DateTime ke TimeOnly
- Menambahkan atau mengurangi waktu
- Mengurai dan memformat TimeOnly
- Bekerja dengan TimeSpan dan DateTime
- Operator aritmatika dan membandingkan TimeOnly
Mengonversi DateTime ke TimeOnly
TimeOnly.FromDateTime Gunakan metode statis untuk membuat TimeOnly
jenis dari jenis, seperti yang DateTime
ditunjukkan dalam kode berikut:
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
Menambahkan atau mengurangi waktu
Ada tiga metode yang digunakan untuk menyesuaikan TimeOnly struktur: AddHours, , AddMinutesdan Add. Baik AddHours
dan AddMinutes
ambil parameter bilangan bulat, dan sesuaikan nilai yang sesuai. Anda dapat menggunakan nilai negatif untuk mengurangi dan nilai positif untuk ditambahkan. Metode mengembalikan instans TimeOnly
baru dikembalikan, karena strukturnya tidak dapat diubah. Metode ini Add
mengambil TimeSpan parameter dan menambahkan atau mengurangi nilai dari TimeOnly
nilai .
Karena TimeOnly
hanya mewakili periode 24 jam, itu bergulir maju atau mundur dengan tepat saat menambahkan nilai yang disediakan ke ketiga metode tersebut. Misalnya, jika Anda menggunakan nilai 01:30:00
untuk mewakili pukul 01.30, maka tambahkan -4 jam dari periode tersebut, nilai akan bergulir mundur ke 21:30:00
, yaitu pukul 21.30. Ada kelebihan beban metode untuk AddHours
, AddMinutes
, dan Add
yang menangkap jumlah hari yang digulirkan.
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
Mengurai dan memformat TimeOnly
TimeOnly dapat diurai dari string, sama seperti strukturnya DateTime . Semua token penguraian berbasis waktu .NET standar berfungsi dengan TimeOnly
. Saat mengonversi TimeOnly
jenis menjadi string, Anda juga dapat menggunakan pola pemformatan berbasis tanggal .NET standar. Untuk informasi selengkapnya tentang pemformatan string, lihat String format tanggal dan waktu standar.
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
Jenis Serialisasi DateOnly dan TimeOnly
Dengan .NET 7+, System.Text.Json
mendukung serialisasi dan deserialisasi DateOnly dan TimeOnly jenis. Pertimbangkan objek berikut:
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
Contoh berikut menserialisasikan Appointment
objek, menampilkan JSON yang dihasilkan, lalu mendeserialisasinya kembali ke instans baru jenisnya Appointment
. Terakhir, instans asli dan yang baru dideserialisasi dibandingkan dengan kesetaraan dan hasilnya ditulis ke konsol:
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}")
Dalam kode sebelumnya:
- Objek
Appointment
dibuat dan ditetapkan keappointment
variabel. appointment
Instans diserialisasikan ke JSON menggunakan JsonSerializer.Serialize.- JSON yang dihasilkan ditulis ke konsol.
- JSON dideserialisasi kembali ke instans baru jenis
Appointment
menggunakan JsonSerializer.Deserialize. - Instans asli dan yang baru dideserialisasi dibandingkan dengan kesetaraan.
- Hasil perbandingan ditulis ke konsol.
Untuk informasi selengkapnya, lihat Cara menserialisasikan dan mendeserialisasi JSON di .NET.
Bekerja dengan TimeSpan dan DateTime
TimeOnly dapat dibuat dari dan dikonversi ke TimeSpan. Selain itu, TimeOnly
dapat digunakan dengan DateTime, baik untuk membuat TimeOnly
instans, atau untuk membuat DateTime
instans selama tanggal disediakan.
Contoh berikut membuat TimeOnly
objek dari TimeSpan
, lalu mengonversinya kembali:
// 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
Contoh berikut membuat DateTime
dari TimeOnly
objek, dengan tanggal arbitrer yang dipilih:
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
Operator aritmatika dan membandingkan TimeOnly
Dua TimeOnly instans dapat dibandingkan satu sama lain, dan Anda dapat menggunakan IsBetween metode untuk memeriksa apakah waktu antara dua kali lainnya. Saat operator penambahan atau pengurangan digunakan pada TimeOnly
, TimeSpan dikembalikan, mewakili durasi waktu.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk