public ActionResult Index() { DateTime isteilenTarih = DateTime.Now; Date date = GetDate(isteilenTarih); //Methodu çağır return View(); } public Date GetDate(DateTime currentDate) { System.Globalization.CultureInfo currentCulture = new System.Globalization.CultureInfo("tr-TR"); Date date = new Date(); date.day = currentDate.Day; date.dayName = currentDate.ToString("dddd", currentCulture); date.week = currentCulture.Calendar.GetWeekOfYear(new DateTime(currentDate.Year, currentDate.Month, currentDate.Day), currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); int delta = DayOfWeek.Monday - currentDate.DayOfWeek; if(delta > 0) delta -= 7; DateTime firstdayofweek = currentDate.AddDays(delta); DateTime lastdayofweek = firstdayofweek.AddDays(7); date.weekName = String.Format("{0:dd MMM}", firstdayofweek) + " - " + String.Format("{0:dd MMM yyyy}", lastdayofweek); date.month = currentDate.Month; date.monthName = currentDate.ToString("MMMM yyyy", currentCulture); date.year = currentDate.Year; date.yearName = currentDate.ToString("yyyy"); return date; } public class Date { public int day {get;set;} public string dayName { get; set; } public int week { get; set; } public string weekName { get; set; } public int month { get; set; } public string monthName { get; set; } public int year { get; set; } public string yearName { get; set; } }
Etiket arşivi: datetime
Json dateTime Convert To JavaScript DateTime ( Türkçe )
Merhabalar ,
mvc içinde dateTime tipimi json ile ön yüze yazdırmam gerekti fakat bu işlemi yaptığımda Tarih bilgisinin “/ Date(1349298000000) /” bu şekilde son kullanıcının anlamayacağı şekilde bir ifade ile karşılaştım .Genel olarak mvc içinde date tipi ConvetToShorDate gibi bir bir ifade ile string e çevirdiklerini gördüm ki benim mvc tiplerimi bozacağı için bu yapıyı kullanmayı uygun görmedim.
/ Date(1349298000000) /
bu ifadenin ne olduğunu araştırdım , json ,jquery’i yapan arkadaşlar düşünmüşler taşınmışlar bir yığın farklı format olduğunu bulmuşlar ki ülkeler arası ki, kullandığımız network te bile gün ay yıl mı yıl ay gün mü vsvs şekilde varyasyonları olduğunu bulmuşlar . Full tarihi vermek yerine Tick dediğimiz değeri bize vermişler .
Tek yapmamız gereken bunu javascript ile istediğimiz DateTime tipine çevirmek aşağıda örneğimizi incelebilirsiz.
function ConvertTicksToDate(vl) { vl = vl.replace("Date", ""); vl = vl.replace("/", ""); vl = vl.replace("(", ""); vl = vl.replace(")", ""); vl = vl.replace("/", "").trim(); var vlDate = new Date(parseInt(vl)); return vlDate.toLocaleDateString(); } $("#CampaignId4").change(function () { var formObj = $("#SmsCampaignForm_4"); $.postJSON($.action("GetCampaignInfo", "ManageController"), { jsonString: $.retunJsonString(formObj) }, function (data) { if ($.handle(data)) { return; } var result = data.Result; $("#frm4ToplamKisiSayisi").text(result.TotalRecord); $("#frm4AtilanSms").text(result.SendSms); $("#frm4BaslangicTarihi").text(ConvertTicksToDate(result.CreateDate)); $("#frm4GelenCagri").text(result.InComingCall); $("#frm4KontorSatisi").text(result.UnitSales); }); });
son olarak
ilk ajax dan gelen tarih / Date(1349298000000) /
Javascript ile çevirmeyi yaptıkdan sonra ise tarih bilgimiz 04 Ekim 2012 Perşembe şekilde görünecektir.
buraya kadar alıntıdır,arkadaşımız gayet güzel anlatmış. Benimde bir kaç eklemem olacak aşağıdaki kodlar gibi.
http://bsenyayla.blogspot.com/2012/10/json-datetime-convert-to-javascript.html
Arkadaşımız tarih çevirme işlemini yerel bilgisayar saatine göre yapmış ve benim bilgisayarımda ingilizce windows yüklü olduğu için ve ingilizcede tarih 5 7 2013 şeklinde görünüyor. Fakat bana lazım olan ise g/a/y yani 05.07.2013 bunun için aşağıdaki fonksiyonu kullanabiliriz.
//Json Tarihi Javascript tarihe çeviriyor. function ConvertTicksToDate(vl) { vl = vl.replace("Date", ""); vl = vl.replace("/", ""); vl = vl.replace("(", ""); vl = vl.replace(")", ""); vl = vl.replace("/", "").trim(); var vlDate = new Date(parseInt(vl)); //vlDate.toLocaleDateString(); //Bilgisayarın tarihine göre ayarlar return ConvertDate(vlDate); } //Date çevirme function ConvertDate(inputdate) { var date = new Date(inputdate); var day = date.getDate(); var month = date.getMonth(); month = month + 1; if ((String(day)).length == 1) day = '0' + day; if ((String(month)).length == 1) month = '0' + month; return [day, month, date.getFullYear()].join('.'); }
Javascript Tarih Kontrolü
Aşağıdaki fonkisyon Javascript ile tarih alanına girilen verinin tarih kontrolünü yapar. Eğer girilen geçerli bir format ise (dd.mm.yyyy) true, değilse false döndürür.
function isValidDate(s) { // format D(D)/M(M)/(YY)YY var dateFormat = /^\d{1,4}[\.|\/|-]\d{1,2}[\.|\/|-]\d{1,4}$/; if (dateFormat.test(s)) { // remove any leading zeros from date values s = s.replace(/0*(\d*)/gi, "$1"); var dateArray = s.split(/[\.|\/|-]/); // correct month value dateArray[1] = dateArray[1] - 1; // correct year value if (dateArray[2].length < 4) { // correct year value dateArray[2] = (parseInt(dateArray[2]) < 50) ? 2000 + parseInt(dateArray[2]) : 1900 + parseInt(dateArray[2]); } var testDate = new Date(dateArray[2], dateArray[1], dateArray[0]); if (testDate.getDate() != dateArray[0] || testDate.getMonth() != dateArray[1] || testDate.getFullYear() != dateArray[2]) { return false; } else { return true; } } else { return false; } }
Veritabanında int olarak tutulan saat ve tarih için çevirme
Bazı eski veri tabanlarında karşılaşmışınızdır, tarih ve saati int olarak tutulur . ve : lardan temizlenerek. Fakat web tarafında int değerleri formatlamak isteyebiliriz, gün adı vs göstermek için. Formatlamak için öncelikle verileri çevirmemiz gerekmektedir. tarihi DateTime zamanı ise TimeSpan’a çevirmeliyiz.Hemen örnek üzerinde görelim;
VeriTabanımızda int olarak tarih verimiz 20130214, saat olarak ise 163000 tutulduğunu farzedelim. Şimdi bu integer değerleri çevirecek olan methodlarımıza göz atalım.
//Tarih oluşturma methodumuz private static DateTime DateCreate(string sdt) { int year = Convert.ToInt32(sdt.Substring(0, 4)); int month = Convert.ToInt32(sdt.Substring(4, 2)); int day = Convert.ToInt32(sdt.Substring(6, 2)); DateTime dt = new DateTime(year, month, day); return dt; } //Saat oluşturma methodumuz private static TimeSpan TimeCreate(string sts) { int hour = Convert.ToInt32(sts.Substring(0, 2)); int munites = Convert.ToInt32(sts.Substring(2, 2)); int seconds = Convert.ToInt32(sts.Substring(4, 2)); return new TimeSpan(hour, munites, seconds); } //Tarih ile saati oluşturma methodumuz private static DateTime DateTimeCreate(string sdt, TimeSpan sts) { int year = Convert.ToInt32(sdt.Substring(0, 4)); int month = Convert.ToInt32(sdt.Substring(4, 2)); int day = Convert.ToInt32(sdt.Substring(6, 2)); DateTime date = new DateTime(year, month, day); return date.Add(sts); } //Methodların kullanımı; DateTime dt = DateTime(20130214); TimeSpan ts = TimeCreate(163000)
Hepsi bu kadar…
C#, DateTime Formatları
Tarih işlemlemlerinde bazen günün adı, bazen ayın adı vs. yazdırmak isteyebiliriz, aşağıda işe yarayarak formatlar bulunmaktadır.
Format kodları açıklamaları
y
(year), M
(month), d
(day), h
(hour 12), H
(hour 24), m
(minute), s
(second), f
(second fraction), F
(second fraction, trailing zeroes are trimmed),t
(P.M or A.M) and z
(time zone).
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123); String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24 String.Format("{0:m mm}", dt); // "5 05" minute String.Format("{0:s ss}", dt); // "7 07" second String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes String.Format("{0:t tt}", dt); // "P PM" A.M. or P.M. String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone String.Format("{0:t}", dt); // "4:05 PM" ShortTime String.Format("{0:d}", dt); // "3/9/2008" ShortDate String.Format("{0:T}", dt); // "4:05:07 PM" LongTime String.Format("{0:D}", dt); // "Sunday, March 09, 2008" LongDate String.Format("{0:f}", dt); // "Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime String.Format("{0:F}", dt); // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime String.Format("{0:g}", dt); // "3/9/2008 4:05 PM" ShortDate+ShortTime String.Format("{0:G}", dt); // "3/9/2008 4:05:07 PM" ShortDate+LongTime String.Format("{0:m}", dt); // "March 09" MonthDay String.Format("{0:y}", dt); // "March, 2008" YearMonth String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123 String.Format("{0:s}", dt); // "2008-03-09T16:05:07" SortableDateTime String.Format("{0:u}", dt); // "2008-03-09 16:05:07Z" UniversalSortableDateTime // month/day numbers without/with leading zeroes String.Format("{0:M/d/yyyy}", dt); // "3/9/2008" String.Format("{0:MM/dd/yyyy}", dt); // "03/09/2008" // day/month names String.Format("{0:ddd, MMM d, yyyy}", dt); // "Sun, Mar 9, 2008" String.Format("{0:dddd, MMMM d, yyyy}", dt); // "Sunday, March 9, 2008" // two/four digit year String.Format("{0:MM/dd/yy}", dt); // "03/09/08" String.Format("{0:MM/dd/yyyy}", dt); // "03/09/2008"
Ayrıca dile göre tarih formatları değişkenlik göstermektededir. Mesela İngilizcede ay/gün/yıl gibi fakat türkçede gün/ay/yıl şeklinde. Dile göre tarih çevirme işlemlerini aşağıdaki gibi yapabiliriz.
lb.BorrowDate = Convert.ToDateTime(txtreturndate.Text, new CultureInfo("tr-TR"));