PDA

View Full Version : تبدیل تاریخ شمسی به میلادی



نیکناز
یک شنبه 09 تیر 1392, 22:58 عصر
سلام دوستان
مطمئنن این تبدیل تاریخ تکراری ترین کد تو برنامه نویسی شده
ولی من به مشکل برخوردم
من مطالب تو سایتم با تاریخ میلادی در دیتابیس ذخیره میشه
حالا من میخوام کاربر من تاریخ شمسی وارد کنه و مطالب ثبت شده اون روز رو ببینه
چون در دیتابیس تاریخ میلادی همراه با زمان ثبت میشه از Contains استفاده کردم که خطا هم میده
ولی در اصل قضیه که تبدیل شمسی به میلادی باشه مشکل دارم کدی که من استفاده میکنم پارامتر زمان هم میگیره که با کد من جور در نمیاد در ضمن برنامه من با linq و mvc3 نوشته شده


public IEnumerable<tbl_Co> func(string SelectedDate)
{
PersianCalendar pc = new PersianCalendar();
int year = int.Parse(SelectedDate.Substring(0, 4));
int mounth = int.Parse(SelectedDate.Substring(5, 2));
int day = int.Parse(SelectedDate.Substring(8, 2));

return dc.tbl_Co.Where(p => p.AddDate.Contains(pc.ToDateTime(year, mounth, day, 0, 0, 0)));
}

hakan648
یک شنبه 09 تیر 1392, 23:17 عصر
سلام
خط 8 رو به این شکل تغییر بدید:

var date = new DateTime(year, mounth, day, pc);
return dc.tbl_Co.Where(p => p.AddDate.Date == date);

نیکناز
یک شنبه 09 تیر 1392, 23:37 عصر
سلام
خط 8 رو به این شکل تغییر بدید:

var date = new DateTime(year, mounth, day, pc);
return dc.tbl_Co.Where(p => p.AddDate.Date == date);

مرسی دوست عزیزم
در دیتابیس تاریخ بصورت 05/26/2013 09:17:46 ب.ظ ذخیره میشه
پس من باید از Contains استفاده کنم ولی خطا میده
ممنون میشم راهنماییم کنید

hakan648
دوشنبه 10 تیر 1392, 00:48 صبح
فکر کنم باید توضیحات بیشتری میدادم.
متد Contains (http://msdn.microsoft.com/en-us/library/bhkz42b3.aspx) برای List است در صورتی که شما یک DateTime دارید. اگر به پیغام خطا دقت کنید ( و بهتره که همیشه خطاهایی که دریافت می کنید رو ذکر کنید! ) متوجه این مورد میشید.
کدی که من نوشتم به این صورت کار میکنه که در هر بار اجرای تابع شرط، از مقدار AddDate پراپرتی Date (http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx) رو میگیره ( که ساعت در این مقدار به 00:00:00 تغییر پیدا میکنه ) و با DateTimeای که در خط بالاتر ایجاد کردیم ( که در این مقدار هم ساعت 00:00:00 هست ) مقایسه میکنه. پس مقایسه ای که در ایجا صورت میگیره فقط بر اساس تاریخ هست و زمان ها نادیده گرفته شده اند.