PDA

View Full Version : خطا در تبدیل تاریخ با استفاده از DateTime



mehdi0020
سه شنبه 20 شهریور 1397, 07:46 صبح
سلام روز بخیر
من از DateTime برای کارهای مربوط به تاریخ استفاده میکنم اما مشکلی که دارم تو تبدیل بعضی از تاریخ ها خطا دارم
DateTime DAT_STRNXT_ACASS_DataTime = new DateTime(1397,02, 29);
برای این تاریخ با خطا مواجه میشوم و خطا از ماه هستش اگر بزرگتر از 2 یزنم مشکلی ندارد
لطفا راهنماییم کنید

danialafshari
سه شنبه 20 شهریور 1397, 08:38 صبح
با سلام
لطفاً کد را در C# قرار بدید و هنگام مواجهه با خطا، خطا رو هم قرار بدید
برای تاریخ شمسی بهتره از PersianCalendar استفاده کنید

System.Globalization‎.PersianCalendar pc = new System.Globalization‎.PersianCalendar();
DateTime time = pc.ToDateTime(1397,02,29,0,0,0,0);

موفق باشید

mehdi0020
سه شنبه 20 شهریور 1397, 08:51 صبح
با سلام
لطفاً کد را در C#‎ قرار بدید و هنگام مواجهه با خطا، خطا رو هم قرار بدید
برای تاریخ شمسی بهتره از PersianCalendar استفاده کنید

System.Globalization‎.PersianCalendar pc = new System.Globalization‎.PersianCalendar();
DateTime time = pc.ToDateTime(1397,02,29,0,0,0,0);

موفق باشید

کد #C

DateTime DAT_STRNXT_ACASS_DataTime = new DateTime(1397,02, 29);



متن خطا:
Year, Month, and Day parameters describe an un-representable DateTime.

امکانش هست اضافه کردن و کاهش روز و تبدیل به شمسی کدی که قرار دادید را هم بنویسید؟

danialafshari
سه شنبه 20 شهریور 1397, 09:08 صبح
سوال شما تکراریست و قبلاً تمام اینها مطرح شده جستجو کنید
DateTime.UtcNow.Date.AddDays(9).ToString();

mehdi0020
سه شنبه 20 شهریور 1397, 09:22 صبح
سوال شما تکراریست و قبلاً تمام اینها مطرح شده جستجو کنید
DateTime.UtcNow.Date.AddDays(9).ToString();

سوال من مشکلی بود که جوابی درموردش نگرفتم
باز از راهنماییتون ممنون
سوال شما تکراریست و قبلاً تمام اینها مطرح شده جستجو کنید!!!!

mehdi0020
سه شنبه 20 شهریور 1397, 09:39 صبح
دوستان کسی نمیتونه راهنماییم کنه؟
چرا این تاریخ هاص خطا میدهد؟؟؟

danialafshari
سه شنبه 20 شهریور 1397, 10:34 صبح
http://barnamenevis.org/showthread.php?542689-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-persia-dll-%D8%A8%D8%AE%D8%A7%D8%B7%D8%B1-%D8%B3%D8%A7%D9%84-%DA%A9%D8%A8%DB%8C%D8%B3%D9%87

mehdi0020
سه شنبه 20 شهریور 1397, 11:11 صبح
http://barnamenevis.org/showthread.php?542689-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-persia-dll-%D8%A8%D8%AE%D8%A7%D8%B7%D8%B1-%D8%B3%D8%A7%D9%84-%DA%A9%D8%A8%DB%8C%D8%B3%D9%87

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

private string Miladi(int year,Int16 month,Int16 day)

{

PersianCalendar pc = new PersianCalendar();
var Miladi = pc.ToDateTime(year, month, day, 0, 0, 0, 0);
var result = String.Format("{0}/{1}/{2}", Miladi.Year.ToString("0000"), Miladi.Month.ToString("00"), Miladi.Day.ToString("00"));

return result;

}

خروجی این تابع string هست در صورتیکه من برای اضافه کردن و کم کردن تاریخ به datetime نیاز دارم باید انتهای تابع خروجی رشته را به datetime تبدیل کنم یا راه مناسب تری پیشنهاد میدید؟

danialafshari
سه شنبه 20 شهریور 1397, 11:26 صبح
برای تغییر string به datetime

var m = Miladi(1397,06,20);
DateTime myDate = DateTime.Parse(m);

یا میتونید متد رو به شکل زیر تغییر دهید

public DateTime Miladi(int year, Int16 month, Int16 day)
{
System.Globalization‎.PersianCalendar pc = new System.Globalization‎.PersianCalendar();
var Miladi = pc.ToDateTime(year, month, day, 0, 0, 0, 0);
var result= $"{Miladi.Year.ToString("0000")}/{Miladi.Month.ToString("00")}/{Miladi.Day.ToString("00")}";
return DateTime.Parse(result);
}

موفق باشید