Giriş
Kısaltmalar şöyle.
yyyy - yıl
MM - ay (sayı)
dd - gün
T - zaman ayracı
HH - 24 saat üzerinden saat
hh - 12 saat üzerinden saat
mm - dakika
ss - saniye
tt - AM, PM ayracı
+00:00 : saat dilimi
Parse metodlarına başvurmadan önce Convert sınıfını kullanmak daha iyi.
Parse metodu girdi olarak belli bir format verilmediği için bir çok formatı deneyerek işlemi gerçekleştirmeye çalışır. Şeklen şöyle yaparız.
Style sağlamak istersek şöyle yaparız.
Birden fazla format sağlayabiliriz. Şöyle yaparız.
Normalde ParseExact saat dilimi isimlerini bilmez, ancak saat dilimi farkını (time zone offset) anlar. Dolayısıyla string'in hangi saat diliminde olduğunu biliyorsak, yerel saat dilimine veya UTC'ye çevrilmesini sağlayabiliriz.
Eğer verilen string'in Utc olduğunu biliyorsak ve yerel saate çevrilmesin istiyorsak şöyle yaparız. Açıklaması şöyle
Örnek
Şöyle yaparız.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Örnek
Birden fazla format sağlayabiliriz. Şöyle yaparız.
Kısaltmalar şöyle.
yyyy - yıl
MM - ay (sayı)
dd - gün
T - zaman ayracı
HH - 24 saat üzerinden saat
hh - 12 saat üzerinden saat
mm - dakika
ss - saniye
tt - AM, PM ayracı
+00:00 : saat dilimi
Parse metodlarına başvurmadan önce Convert sınıfını kullanmak daha iyi.
string date = ...
DateTime dt = Convert.ToDateTime(date);
Parse metodu string + cultureParse metodu girdi olarak belli bir format verilmediği için bir çok formatı deneyerek işlemi gerçekleştirmeye çalışır. Şeklen şöyle yaparız.
var dt = DateTime.Parse("...", CultureInfo.GetCultureInfo("..."));
Türkçe için şu iki örnek farklı ayraçlar kullanılsa bile başarıyla çevrilir.
DateTime.Parse(
"06/02/2016", new System.Globalization.CultureInfo("tr-TR"))
veyaDateTime.Parse(
"06.02.2016", new System.Globalization.CultureInfo("tr-TR"))
Parse metodu - string + format + styleStyle sağlamak istersek şöyle yaparız.
string str = ...;
DateTime timeUtc = DateTime.Parse(str, null, DateTimeStyles.AdjustToUniversal);
ParseExact metodu - string + format + culture
İmzası şöyleDateTime ParseExact(String, String, IFormatProvider)
Şöyle yaparız.string str = "5/2/2016";
DateTime dt = DateTime.ParseExact(str, "d/M/yyyy", CultureInfo.InvariantCulture);
Şöyle yaparız.DateTime dt = DateTime.ParseExact("26-12-2017 5:45pm", "dd-MM-yyyy h:mmtt",
CultureInfo.InvariantCulture);
ParseExact metodu - string + formats (format dizisi) + culture + styleBirden fazla format sağlayabiliriz. Şöyle yaparız.
// ex...
string dateString = ...; // your date.
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
"MM/d/yyyy HH:mm:ss.ffffff" };
var dt = DateTime.ParseExact(dateString, formats,
new CultureInfo("en-US"), DateTimeStyles.None);
ParseExact metodu - string + format + culture + styleNormalde ParseExact saat dilimi isimlerini bilmez, ancak saat dilimi farkını (time zone offset) anlar. Dolayısıyla string'in hangi saat diliminde olduğunu biliyorsak, yerel saat dilimine veya UTC'ye çevrilmesini sağlayabiliriz.
Eğer verilen string'in Utc olduğunu biliyorsak ve yerel saate çevrilmesin istiyorsak şöyle yaparız. Açıklaması şöyle
AssumeUniversal string'in Utc olduğunu belirtir. AdjustToUniversal yerel saate çevrilmemesini belirtir.AssumeLocal: Specifies that if s lacks any time zone information, it is assumed to represent a local time. Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.AssumeUniversal: Specifies that if s lacks any time zone information, it is assumed to represent UTC. Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
DateTime.ParseExact(dateString,
"MM/dd/yyyy HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal)
TryParse metodu - stringÖrnek
Şöyle yaparız.
DateTime dob;
DateTime.TryParse("...", out dob);
ÖrnekŞöyle yaparız.
string s = "5:45 PM";
DateTime d;
DateTime.TryParse(s, out d);
Eğer parse işlemi hatalıysa bile değişkenimize bir değer atanır, çünkü result parametresi out olarak tanımlı.bool TryParse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles,
out DateTime result) {
result = DateTime.MinValue;
...
}
TryParseExact metodu - string + format + culture + styleÖrnek
Şöyle yaparız.
string dateTime = "...";
string dateFormat = "...";
DateTime timeResult;
bool parsed = DateTime.TryParseExact(dateTime, dateFormat,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out timeResult);
TryParseExact metodu - string + formats (format dizisi) + culture + styleÖrnek
Birden fazla format sağlayabiliriz. Şöyle yaparız.
string[] formats = { "yyyyMMdd HH:mm:ss", "ddMMyyyy HH:mm:ss",
"yyyy/MM/dd HH:mm:ss", "MM/dd/yyyy HH:mm:ss" }; //and so on
string dtText = "01/31/2016 23:30:15"; //example
DateTime dt;
bool parsed = DateTime.TryParseExact(dtText, formats,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out dt);
Hiç yorum yok:
Yorum Gönder