Bu sınıf Java 8 'deki Duration kavramına benziyor. Yaz saatinden, artık yıldan, sistem saatinden bağımsızdır çünkü bu sınıf içinde tick denilen bir alan barındırır. Süre hakkında bildiği tek şey budur. Tick kavramının ne olduğu aşağıda FromTicks metoduna açıklanıyor.
Total ile başlayan alanların açıklaması şöyle
Şöyle yaparız.
Örnek ver.
Constructor - days + hours + minutes + seconds + milliseconds
Şöyle yaparız
İki tarih arasındaki süre ile de kurulabilir.
Şöyle yaparız.
FromDays metodu
Şöyle yaparız.
Böyle bir metod yok ve niçin yok bilmiyorum ancak yazmak isteseydik şöyle yapardık. Tick sayısını 10 ile çarpınca mikrosaniye elde ederiz.
TimeSpan sınıfı 100 nanosaniyeye denk gelen tick kavramını kullanıyor. Tick kavramı tam olarak nereden geliyor bilmiyorum ancak işlemci hızından ve işletim sisteminden bağımsız. TimeSpan.TicksPerSecond alanı ile bu değer alınabilir. Değer 10 milyon'dur çünkü 1 saniye 1 milyar nanosaniye var.
Şöyle yaparız.
Şöyle yaparız.
Total ile başlayan alanların açıklaması şöyle
With TimeSpan you always have to use the Total properties if you want to know the total time that has passed. All properties without Total in front of them only display the current amount of time that has passed.Constructor - hours + minutes + seconds
Şöyle yaparız.
new TimeSpan(7, 23, 0);
Constructor - days + hours + minutes + secondsÖrnek ver.
Constructor - days + hours + minutes + seconds + milliseconds
Şöyle yaparız
TimeSpan span = new TimeSpan (0, 0, 13, 0, 0);
Constructor - Date Arithmeticİki tarih arasındaki süre ile de kurulabilir.
var startDateTime = DateTime.Parse(starttime).Time;
var endDateTime = DateTime.Parse(endtime).Time;
TimeSpan timeSpent = endDateTime - startDateTime;
Days AlanıŞöyle yaparız.
Console.WriteLine(ts.Days.ToString());
Duration metodu
Bu alan ismen aslında tam bir kavram kargaşası yaratıyor. Mutlak değere sahip bir TimeSpan döndürür. Yani tick alanımız eksi ise bunu mutlak değer haline getirip yeni bir TimeSpan verir.FromDays metodu
Şöyle yaparız.
TimeSpan ts = TimeSpan.FromDays (1);
FromHours metodu
Şöyle yaparız.TimeSpan ts = TimeSpan.FromHours(5.4898391027272906);
Console.WriteLine (ts.Seconds); // 23
FromMicroSeconds metoduBöyle bir metod yok ve niçin yok bilmiyorum ancak yazmak isteseydik şöyle yapardık. Tick sayısını 10 ile çarpınca mikrosaniye elde ederiz.
var ts = TimeSpan.FromTicks(long.Parse(Console.ReadLine())*10);
FromMinutes metodu
Örnek
Şöyle yaparız. Çıktı olarak 33:20 alırız.
Double sayı verilebilir. Şöyle yaparız.
Şöyle yaparız.Örnek
Şöyle yaparız. Çıktı olarak 33:20 alırız.
double minutes = 2000;
TimeSpan ts = TimeSpan.FromMinutes(minutes);
var res = $"{(int)ts.TotalHours}:{ts.Minutes}";
ÖrnekDouble sayı verilebilir. Şöyle yaparız.
TimeSpan a = TimeSpan.FromMinutes(2);
TimeSpan b = TimeSpan.FromMinutes(1.95);
TimeSpan c = TimeSpan.FromMinutes(1.97);
TimeSpan d = TimeSpan.FromMinutes(1.99);
FromSeconds metodu
TimeSpan ts = TimeSpan.FromSeconds (0);
FromTicks metoduTimeSpan sınıfı 100 nanosaniyeye denk gelen tick kavramını kullanıyor. Tick kavramı tam olarak nereden geliyor bilmiyorum ancak işlemci hızından ve işletim sisteminden bağımsız. TimeSpan.TicksPerSecond alanı ile bu değer alınabilir. Değer 10 milyon'dur çünkü 1 saniye 1 milyar nanosaniye var.
1 tick = 100 nanoseconds
= 0.1 microseconds
= 0.0001 milliseconds
= 0.0000001 seconds
Tick sayısı ile TimeSpan nesnesi yaratılabilir.TimeSpan ts = TimeSpan.FromTicks(28000000000);
Hours AlanıŞöyle yaparız.
Console.WriteLine(ts.Hours.ToString());
Minutes Alanı
0 - 59 arasında bir değer verir. Şöyle yaparız.
0 - 59 arasında bir değer verir. Şöyle yaparız.
Console.WriteLine(ts.Minutes.ToString());
Parse metodu
Hours:Minutes:Seconds:Miliseconds için şöyle yaparız.TimeSpan ts = TimeSpan.Parse("10:00:00")
Days:Hours:Minutes:Seconds:Miliseconds için şöyle yaparız.TimeSpan ts = TimeSpan.Parse ("2:04:13:27.0000000");
ParseExact metoduŞöyle yaparız.
TimeSpan ts = TimeSpan.ParseExact("11.35", "mm'.'ss", null);
Seconds Alanı
0 - 59 arasında bir değer verir. Şöyle yaparız.
Bu alan 64 bit uzunluğunda. Direkt kullanmak pek gerekmiyor. Şöyle yaparız.
0 - 59 arasında bir değer verir. Şöyle yaparız.
TimeSpan span = TimeSpan.FromHours (5.4898391027272906);
Console.WriteLine(span.Seconds); // 23
Ticks AlanıBu alan 64 bit uzunluğunda. Direkt kullanmak pek gerekmiyor. Şöyle yaparız.
TimeSpan ts = new TimeSpan( 2, 8, 8, 8 );
Int64 bits = ts.Ticks;
TotalDays Alanı
tick alanı belli bir sabite bölünerek gün sayısına çevrilir.
public double TotalDays {
get { return ((double)_ticks) * DaysPerTick; }
}
TotalMiliSeconds Alanı
double türündendir. Şöyle yaparız.
double interval = TimeSpan.FromDays(1).TotalMilliseconds;//24 * 60 * 60 * 1000
TotalSeconds Alanı
double türündendir. Şöyle yaparız.
string longTime = "23:33:44";
TimeSpan ts = TimeSpan.Parse(longTime, CultureInfo.InvariantCulture);
double seconds = ts.TotalSeconds; // 84824
ToString metodu
.Net 4.0 ile TimeSpan IFormattable arayüzünden kalıtıyor. Şöyle yaparız.
Şöyle yaparız.
ts.ToString(@"hh\:mm\:ss\.ff")
Zero AlanıŞöyle yaparız.
TimeSpan.Zero;
Diğer
Infinite TimeSpan
Fikren saçma gelse de Timeout işlemleri için böyle bir nesne tanımlamak mümkün. Day, Hour, Minute, Second olarak 0, Millisecond olarak -1 verilince infinite kabul ediliyor. Yani şöyle yaratabiliriz.TimeSpan infinite = TimeSpan.FromMilliseconds (-1);
Ayrıca Timeout.InfiniteTimeSpan alanı da aynı işlevi görür. Zaten bu alan şöyle tanımlı.TimeSpan InfiniteTimeSpan = new TimeSpan (0, 0, 0, 0, Timeout.Infinite);
public const int Infinite = -1;
Hiç yorum yok:
Yorum Gönder