PDA

View Full Version : مشکل این کد - بدست آوردن روزهای بین دو تاریخ



بیتا حکمت
شنبه 29 فروردین 1394, 19:04 عصر
DateTime date1 = DateTime.ParseExact(textBox1.Text, "yyyyMMddHHmmss", null);
DateTime date2 = DateTime.ParseExact(textBox2.Text, "yyyyMMddHHmmss", null);
TimeSpan t = date2 - date1;
double result = t.TotalDays();





سوال اولم اینکه : به جای خط این چهارم چی بنویسم . من میخوام که تعداد روزهای سپری شده رو به صورت عدد داشته باشم تا با عدد دیگری مقایسه کنیم .

سوال دومم اینکه : برای اینکه تاریخی که تو دیتابیس ثبت می کنم به فرمت تاریخ سیستم عامل کاربر وابسته نباشم از کد زیر استفاده کردم . مشکلی که پیش نمیاد ؟!



DateTime d = DateTime.Now;
string dateString = d.ToString("yyyyMMddHHmmss");
textBox1.Text = dateString;

بیتا حکمت
شنبه 29 فروردین 1394, 19:50 عصر
جواب سوال اول رو یافتم باید می نوشتم : int result = t.Days;

ali_md110
شنبه 29 فروردین 1394, 20:13 عصر
سلام
میتونید با TiotalDatys هم اینکار انجام بدید



var startDate = Convert.ToDateTime("2014/01/10");
var endData = Convert.ToDateTime("2014/01/20");
var t = endData - startDate;
int result = (int) t.TotalDays;
Console.WriteLine("مانده روز :"+result.ToString());


سوال دومتون هم مشکلی ندارید ولی سعی کنید تاریخ بصورت میلادی و فرمت معمولی ذخیره کنید وقت نمایش اون رو تبدیل یا فرمت کنید

بیتا حکمت
یک شنبه 30 فروردین 1394, 14:07 عصر
سلام
میتونید با TiotalDatys هم اینکار انجام بدید



var startDate = Convert.ToDateTime("2014/01/10");
var endData = Convert.ToDateTime("2014/01/20");
var t = endData - startDate;
int result = (int) t.TotalDays;
Console.WriteLine("مانده روز :"+result.ToString());


سوال دومتون هم مشکلی ندارید ولی سعی کنید تاریخ بصورت میلادی و فرمت معمولی ذخیره کنید وقت نمایش اون رو تبدیل یا فرمت کنید

ممنونم . همین روش شما درسته . موردی که در پست شماره دوم ازش استفاده کردم خطا نمی داد اما جوابش درست نبود . ولی به مشکل جدید برخوردم


http://8pic.ir/images/30dp6efp78ni0q00de00.png (http://8pic.ir/)


وقتی ساعت 4 هست و ساعت رو 8 ساعت جلو می برم یعنی روی ساعت 12 ، مشکلی تو که عکس می بینید پیش میاد . کلا" وقتی ساعت دوم یعنی T2 روی 12 باشه ، مشکلاتی پیش میاد .
کدی که بدست آوردن فاصله زمانی استفاده کردم :




public System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");




// ساعت
DateTime date1 = DateTime.ParseExact(textBox1.Text, "yyyy-MM-dd hh:mm:ss tt", ci);
DateTime date2 = DateTime.ParseExact(textBox2.Text, "yyyy-MM-dd hh:mm:ss tt", ci);
TimeSpan t = date2 - date1;
int result = (int)t.TotalHours;





مساله دیگه اینکه من اومدم تو برنامه ام از این کدها استفاده کردم تا همیشه به جای " ب.ظ " یا "ق. ظ" Pm یا AM نشون داده بشه . ولی تو یکی از ویندوزها این کدهای پایینی عمل نکرد و همون " ب. ظ " رو نشون داد.



public System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");



و




private void button1_Click(object sender, EventArgs e)
{

DateTime d = DateTime.Now;
string dateString = d.ToString("yyyy-MM-dd hh:mm:ss tt",ci);
textBox1.Text = dateString;
}