Giriş
DateTime bir sınıf değil bir struct yani alanları her zaman bir değere atanmak zorunda. DateTime sistem saatini döner.
DateTime sınıfı saat dilimi ve locale hakkında bilgiye sahip değildir. SQLServer'da DATETIME veya SMALLDATETIME tipinde saklanır.
Constructor
Metodun imzası şöyle.
Açıklaması şöyle
Şöyle yaparız.
Şöyle yaparız.
Julien takvime göre kurabiliriz.
TimeSpan veya AddXXX metodları ile ileri alınabilir. Açıldığından beri geçen saniyeleri sayan bir cihazın ne kadar zamandır açık olduğunu yine Add() metodu kullanılarak bulunur.
Geçtiğimiz cumartesi gece yarısı şöyle bulunur.
Tick olarak ileri alırız.
Date Alanı
Nesnenin saat alanını 0 olarak verir.
{12/01/2016 00:00:00}
Sadece günü şöyle gösteririz.
Şöyle yaparız.
double'dan DateTime tipine çevirmek için kullanılır. DateTime nesnesini tekrar double'a çevirmek için ToAODate() metodu kullanılır. Bu mtodu Excel günlerini okumak için kullanılır.
Örnek
Şöyle yaparız
Şöyle yaparız.
Şöyle yaparız.
MinValue Alanı
Geçersiz bir değeri belirtir. Yani 1/1/0001 12:00:00 AM değeridir.
Açıklaması şöyle
operator - metodu
Subtract metodunu kullanmaktan daha kolay. Şöyle yaparız.
DateTime Parse Metodları yazısına taşıdım.
SpecifyKind metodu
Parse metodları saat dilimini bilmeyebilir.
Subtract metodu
İki DateTime nesnesinin farkı alınır. Fark 2 gün, 3 saat gibi bir şekilde çıkar.
Şöyle yaparız.
Utc saatten yerel saate çevirir.
ToShortDateString metodu
DateTime ToString Metodları yazısına taşıdım
ToString metodu
DateTime ToString Metodları yazısına taşıdım
TryParse metodu
DateTime Parse Metodları yazısına taşıdım.
TryParseExact metodu
DateTime Parse Metodları yazısına taşıdım.
ToUniversalTime
Yerel saatten Utc saate çevirir.
DateTime bir sınıf değil bir struct yani alanları her zaman bir değere atanmak zorunda. DateTime sistem saatini döner.
DateTime sınıfı saat dilimi ve locale hakkında bilgiye sahip değildir. SQLServer'da DATETIME veya SMALLDATETIME tipinde saklanır.
Constructor
Metodun imzası şöyle.
public DateTime(
int year,
int month,
int day,
int hour,
int minute,
int second
)
Bilinen bir tarihe göre kurabiliriz.DateTime dt = new DateTime(1970, 1, 1);
Constructor - ticksAçıklaması şöyle
Örnekticks Type: System.Int64A date and time expressed in the number of 100-nanosecond intervals that have elapsed since January 1, 0001 at 00:00:00.000 in the Gregorian calendar.
Şöyle yaparız.
TimeSpan myTimeSpan = ...;
DateTime dt= new DateTime (myTimeSpan.Ticks);
ÖrnekŞöyle yaparız.
long value = 635872032000000000L;
DateTime result = new DateTime(value);
Constructor - year + month + day + calendarJulien takvime göre kurabiliriz.
DateTime dt = new DateTime(year, month, day, new JulianCalendar());
Add metoduTimeSpan veya AddXXX metodları ile ileri alınabilir. Açıldığından beri geçen saniyeleri sayan bir cihazın ne kadar zamandır açık olduğunu yine Add() metodu kullanılarak bulunur.
TimeSpan timeOfDay = TimeSpan.FromSeconds( 43200 );
DateTime dt = DateTime.Today.Add( timeOfDay );
AddDays metoduGeçtiğimiz cumartesi gece yarısı şöyle bulunur.
DateTime today = DateTime.Today;
int datediff = today.DayOfWeek - DayOfWeek.Saturday;
DateTime Saturday = today.AddDays(-datediff);
lblSaturday.Text = Saturday.ToString();
veya şöyleDateTime time = ...;
int dayOfWeek = (int)time.DayOfWeek;
DateTime saturdaySundayMidnight = time.AddDays(-dayOfWeek).Date;
AddSeconds metodu
Şöyle yaparızint seconds = 43200;
DateTime dt = DateTime.Today.AddSeconds(seconds);
AddTicks metoduTick olarak ileri alırız.
Date Alanı
Nesnenin saat alanını 0 olarak verir.
DateTime justDate = DateTime.Now.Date;
Bu kod aslında şununla aynıdır.DateTime justDate = DateTime.Today;
Saat 0 olsa bile toString metodu saati şöyle gösterir.{12/01/2016 00:00:00}
Sadece günü şöyle gösteririz.
var str = dt.Date.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
DaysInMonth metodu - year + monthŞöyle yaparız.
DateTime.DaysInMonth(2017,1);
DayOfWeek Alanı
Nesnenin haftanın kaçıncı gününü temsil ettiğini belirtir. Gün int'e şöyle çevrilir.DayOfWeek startWeekEnum = DateTime.Now.DayOfWeek;
int startWeek = ((int)startWeekEnum);
Tanımlı sabitlerle karşılaştırmak için şöyle yaparız.if (dt.DayOfWeek != DayOfWeek.Sunday) {...}
Şöyle yaparız.if (dt.DayOfWeek == DayOfWeek.Friday) {...}
FromAODate metodu - doubledouble'dan DateTime tipine çevirmek için kullanılır. DateTime nesnesini tekrar double'a çevirmek için ToAODate() metodu kullanılır. Bu mtodu Excel günlerini okumak için kullanılır.
Örnek
Şöyle yaparız
var dt = DateTime.FromOADate(dDouble );
ÖrnekŞöyle yaparız.
DateTime dt = DateTime.FromOADate(39938);
ÖrnekŞöyle yaparız.
DateTime dt = DateTime.FromOADate(table.Rows[i].Field<double>(2));
Kind Alanı
Üç tane değer alır. Unspecified, Local ve Utc. DateTime.Now bu alana Local değerini atar.MinValue Alanı
Geçersiz bir değeri belirtir. Yani 1/1/0001 12:00:00 AM değeridir.
DateTime.MinValue
Now AlanıAçıklaması şöyle
SŞimdiki zamanı temsil eder. Nesnenin Tick ve Hour, Minute gibi alanları yerel zamana göre atanır. Anladığım kadarıyla bu alan UtcNow alanına yerel zaman dilimini ekleyerek bulunuyor.The Now property returns a DateTime value that represents the current date and time on the local computer. Note that there is a difference between a DateTime value, which represents the number of ticks that have elapsed since midnight of January 1, 0001, and the string representation of that DateTime value, which expresses a date and time value in a culture-specific-specific format.
Console.WriteLine(DateTime.Now);
Windows 7 ve 8'de bu metod 15 milisaniye geçmeden arka arkaya çağırırsak aynı Ticks değerini alırız. Çünkü sistem saatinin çözünürlüğü çok fazla değil.operator - metodu
Subtract metodunu kullanmaktan daha kolay. Şöyle yaparız.
var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;
Parse metoduDateTime Parse Metodları yazısına taşıdım.
ParseExact metodu
DateTime Parse Metodları yazısına taşıdım.Parse metodları saat dilimini bilmeyebilir.
DateTime convertedDate = DateTime.Parse(dateStr);
var kind = convertedDate.Kind; // will equal DateTimeKind.Unspecified
Bu durumda şöyle yaparız.
DateTime convertedDate = DateTime.SpecifyKind(
DateTime.Parse(dateStr),
DateTimeKind.Utc);
var kind = convertedDate.Kind; // will equal DateTimeKind.Utc
İki DateTime nesnesinin farkı alınır. Fark 2 gün, 3 saat gibi bir şekilde çıkar.
DateTime d1 = ...;
DateTime d2 = ...;
TimeSpan diff = d1.Subtract(d2);
Ticks Alanı
Her Tick 100 nanosaniyeyi temsil eder.
ToAODate metodudt.Ticks;
Bu alanın güncellenmesi 10 ms. kadar sürebiliyor. Dolayısıyla arka arkaya çağrılarda aynı değeri görebiliriz.Şöyle yaparız.
double dStarttime = dt.ToOADate();
Today Alanı
Bugünün ilk başını yani gece yarısını temsil eder.DateTime dt = DateTime.Today;
ToLocalTime metoduUtc saatten yerel saate çevirir.
DateTime dt = utcDate.ToLocalTime();
ToLongDateString metodu
DateTime ToString Metodları yazısına taşıdımToShortDateString metodu
DateTime ToString Metodları yazısına taşıdım
ToString metodu
DateTime ToString Metodları yazısına taşıdım
DateTime Parse Metodları yazısına taşıdım.
TryParseExact metodu
DateTime Parse Metodları yazısına taşıdım.
Yerel saatten Utc saate çevirir.
DateTime localDateTime = ...;
DateTime utcDateTime = localDateTime.ToUniversalTime();
UtcNow Alanı
UTC zamanını temsil eder. Nesnenin Tick ve Hour, Minute gibi alanları yerel UTC saatine göre atanır.
Temporal Adjustment Örnekleri
Bir sonraki ayın son gününü bulmak
Şöyle yaparız. Önce bu ayın ilk gününü buluruz. Sonra 2 ay ekleriz. 1 gün çıkararak sonraki ayın son gününü buluruz.
Şöyle yaparız.
Bugünün Pazartesi 17:45 ile Çarşamba 18:00 arasında düşüp düşmediğini şöyle buluruz.
Haftanın ilk gününü buluruz. Bugünden haftanın ilk gününü çıkarırız. Eğer fark 1 gün 17 saat 45 dakika ile 3 gün 18 saat arasında ise istenilen aralıktadır.
DateTime.UtcNow
Temporal Adjustment Örnekleri
Bir sonraki ayın son gününü bulmak
Şöyle yaparız. Önce bu ayın ilk gününü buluruz. Sonra 2 ay ekleriz. 1 gün çıkararak sonraki ayın son gününü buluruz.
DateTime reference = DateTime.Now;
DateTime firstDayThisMonth = new DateTime(reference.Year, reference.Month, 1);
DateTime firstDayPlusTwoMonths = firstDayThisMonth.AddMonths(2);
DateTime lastDayNextMonth = firstDayPlusTwoMonths.AddDays(-1);
DateTime endOfLastDayNextMonth = firstDayPlusTwoMonths.AddTicks(-1);
En Yakın Ayın Son Gününü BulmakŞöyle yaparız.
// Names adjusted to follow .NET naming conventions
public static DateTime FindNearestEndOfMonth(DateTime date)
{
int year = date.Year;
int month = date.Month;
int daysInMonth = DateTime.DaysInMonth(year, month);
return date.Day >= daysInMonth / 2
// End of current month
? new DateTime(year, month, daysInMonth)
// End of previous month
: new DateTime(year, month, 1).AddDays(-1);
}
İki Tarih Aralığı KontrolüBugünün Pazartesi 17:45 ile Çarşamba 18:00 arasında düşüp düşmediğini şöyle buluruz.
Haftanın ilk gününü buluruz. Bugünden haftanın ilk gününü çıkarırız. Eğer fark 1 gün 17 saat 45 dakika ile 3 gün 18 saat arasında ise istenilen aralıktadır.
DateTime time = DateTime.Today;
int dayOfWeek = (int)time.DayOfWeek;
DateTime saturdaySundayMidnight = time.AddDays(-dayOfWeek).Date;
TimeSpan timeOfWeek = time.Subtract(saturdaySundayMidnight);
TimeSpan startTime = new TimeSpan(1,17,45,0); //Monday 5:45PM
TimeSpan endTime = new TimeSpan(3,18,0,0); //Wednesday 6:00PM
if ((timeOfWeek >= startTime) && (timeOfWeek <= endTime))
{
Console.WriteLine("In Range");
}
Hiç yorum yok:
Yorum Gönder