PDA

View Full Version : سوال: مشکل درتبدیل date در سی شارپ



zinat1356
سه شنبه 21 شهریور 1391, 19:10 عصر
من کد زیر که اجرا می کنم برای تبدیل تاریخ این خطا را میده ؟

SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM

اینم کد

class Date
{

public static DateTime DateMiladi(string str)
{

DateTime dt = new DateTime();


dt = DateTime.Parse(str, new System.Globalization.CultureInfo("en-GB").DateTimeFormat );
return dt;

}
کسی می تونه کمکم کنه ؟
ممنون

matin.soft
سه شنبه 21 شهریور 1391, 19:14 عصر
با توجه به خطا ورودي تاريخ اشتباهه. چون شما از تاريخ شمسي در ورودي استفاده مي كنيد در حالي كه در پايگاه داده نوع تاريخ ميلاديه.پس نوع داده تاريخ رو استرينگ انتخاب كنيد در ديتابيس.

roolinjax
سه شنبه 21 شهریور 1391, 19:15 عصر
سلام تاریخ وارد شده معتبر نیست
در واقع بین محدوده ای که توی ارور می بینید نیست
می خواین چیکار کنین ؟
بگین تا کدشو بگم

roolinjax
سه شنبه 21 شهریور 1391, 19:17 عصر
متین جان استرینگ کار درستی نیست
بهتره کار دیگه ای بکنیم ، نوع داده باید همون تاریخ زمان باشه توی دیتابیس ( آخه عواقب داره )

zinat1356
سه شنبه 21 شهریور 1391, 19:21 عصر
با توجه به خطا ورودي تاريخ اشتباهه. چون شما از تاريخ شمسي در ورودي استفاده مي كنيد در حالي كه در پايگاه داده نوع تاريخ ميلاديه.پس نوع داده تاريخ رو استرينگ انتخاب كنيد در ديتابيس.

ممنون جواب دادین من دیتا بیس عوض کردم تاریخ را در دیتابیس استرینگ گذاشتم باز هم همین خطا را داد. من می خوام با این تابعی که نوشتم تاریخ شمسی را به میلادی تبدیل کنم ولی متاسفانه جواب نمی ده ؟ یه کد همین جا دیدم اونم کار نکرد ؟

ممنون میشم کمکم کنید

zinat1356
سه شنبه 21 شهریور 1391, 19:25 عصر
این کدی هست که پیدا کردم ولی متاسفانه این هم کار نمی کنه :



public DateTime pcal(String t)
{
try
{

System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
string[] s;
s = t.Split('/');
return (pc.ToDateTime(Int32.Parse(s[0]), Int32.Parse(s[1]), Int32.Parse(s[2]), 7, 0, 0, 0));
}
catch
{
MessageBox.Show("خطا در <span class="highlight">تاریخ</span> ورودی ، از <span class="highlight">تاریخ</span> فعلی سیستم استفاده شد");
return System.DateTime.Now;
}
}

zinat1356
سه شنبه 21 شهریور 1391, 19:26 عصر
سلام تاریخ وارد شده معتبر نیست
در واقع بین محدوده ای که توی ارور می بینید نیست
می خواین چیکار کنین ؟
بگین تا کدشو بگم


من می خوام با این تابعی که نوشتم تاریخ شمسی را به میلادی تبدیل کنم ولی متاسفانه جواب نمی ده ؟ یه کد همین جا دیدم اونم کار نکرد ؟ کد که می گم هم گذاشتم
ممنون

roolinjax
سه شنبه 21 شهریور 1391, 19:30 عصر
کد تبدیل شمسی به میلادی :
public static string shamsi_(DateTime sdate)
{
PersianCalendar pc = new PersianCalendar();
string year = Convert.ToString(pc.GetYear(sdate));
string month = Convert.ToString(pc.GetMonth(sdate));
string day = Convert.ToString(pc.GetDayOfMonth(sdate));
if (month.Length < 2)
month = "0" + month;
if (day.Length < 2)
day = "0" + day;
string all = year + "-" + month + "-" + day;
return all;
}

zinat1356
سه شنبه 21 شهریور 1391, 19:35 عصر
کد تبدیل شمسی به میلادی :
public static string shamsi_(DateTime sdate)
{
PersianCalendar pc = new PersianCalendar();
string year = Convert.ToString(pc.GetYear(sdate));
string month = Convert.ToString(pc.GetMonth(sdate));
string day = Convert.ToString(pc.GetDayOfMonth(sdate));
if (month.Length < 2)
month = "0" + month;
if (day.Length < 2)
day = "0" + day;
string all = year + "-" + month + "-" + day;
return all;
}

این کد عالیه درست کا میکنه :)
ممنون

roolinjax
سه شنبه 21 شهریور 1391, 19:37 عصر
البته اگر می خواید من یه کلاس شمسی نوشتم که انواع اقسام کارهایی که می خواین با شمسی انجام بدین رو توش نوشتم (آدرس ایمیل بدین براتون بفرستم)

zinat1356
سه شنبه 21 شهریور 1391, 19:51 عصر
البته اگر می خواید من یه کلاس شمسی نوشتم که انواع اقسام کارهایی که می خواین با شمسی انجام بدین رو توش نوشتم (آدرس ایمیل بدین براتون بفرستم)

کلاس شمسی شما چه طوری هست من از یه کامپوننت استفاده می کنم که یه مشکل کوچیک داره کلاس شما می تونه مشکل منو حل کنه ؟

کامپوننت من وقتی فرم لود میشه null هست مشکل من اینه که برنامه من تاریخ می تونه null باشه حالا فرض کنید یه کاربر تاریخ را وارد کرد بعد متوجه میشه که نباید تاریخ وارد می کرد متاسفانه با این کامپوننت من نمی تونم به کاربر اجازه بدم که تاریخ پاک کنه آیا کلاس شما این قابلیت داره که کاربر بتونه تاریخ را پاک کنه ؟

roolinjax
سه شنبه 21 شهریور 1391, 19:55 عصر
در هیچ برنامه ای استفاده از کامپوننت توصیه نمیشه ، چون ممکنه اکسپایر بشه و بعد از 6 ماه دیگه برنامه کار نکنه
کلاس من فقط از رفرنس های خود ویژوال استودیو استفاده شده
من روی پروژه ای کار کردم که کلا جنگ متغیرهای تاریخ بود واسه همین این کلاس ماحصل تمام بررسی های من توی اون مدت بود.
در ضمن متوجه نمیشم یعنی چی که تاریخ رو پاک کنه ؟
این فقط یه کلاس از انواع توابع تاریخ و زمانه که من نوشتم

zinat1356
سه شنبه 21 شهریور 1391, 20:09 عصر
در هیچ برنامه ای استفاده از کامپوننت توصیه نمیشه ، چون ممکنه اکسپایر بشه و بعد از 6 ماه دیگه برنامه کار نکنه
کلاس من فقط از رفرنس های خود ویژوال استودیو استفاده شده
من روی پروژه ای کار کردم که کلا جنگ متغیرهای تاریخ بود واسه همین این کلاس ماحصل تمام بررسی های من توی اون مدت بود.
در ضمن متوجه نمیشم یعنی چی که تاریخ رو پاک کنه ؟
این فقط یه کلاس از انواع توابع تاریخ و زمانه که من نوشتم

من زیاد از کامپوننت استفاده کردم در برنامم اگه این طور که شما میگید پس برنامه من مشکل پیدا می کنه ؟؟؟؟؟؟؟؟؟؟؟؟:(
اگه اینجور هست که شما میگید پس کامپوننت به درد نمی خوره برای چی درست میشه ؟
من ایمیل براتون فرستادم توی پیام خصوصی

roolinjax
سه شنبه 21 شهریور 1391, 20:16 عصر
بنده هم جواب دادم و کلاس رو به ایمیلتون ارسال کردم
والا اکثر کامپوننت ها تریال هستن ، بستگی داره که از کجا گرفته باشید . چه عملی رو باهاش انجام بدید.
مثلا کامپوننت ارسال اس ام اس تریاله
یا یه کامپوننت گزارش گیری هست که خیلی جالب تر از کریستال ریپورته ولی تریاله
قبل از استفاده از هر کامپوننتی بررسی کنید تا به مشکل نخورید.

zinat1356
سه شنبه 21 شهریور 1391, 20:19 عصر
من یه سوال داشتم
از کجا باید بدونم که کامپوننتی که استفاده کردم اکسپایر میشه یا نه ؟

zinat1356
سه شنبه 21 شهریور 1391, 20:22 عصر
بنده هم جواب دادم و کلاس رو به ایمیلتون ارسال کردم
والا اکثر کامپوننت ها تریال هستن ، بستگی داره که از کجا گرفته باشید . چه عملی رو باهاش انجام بدید.
مثلا کامپوننت ارسال اس ام اس تریاله
یا یه کامپوننت گزارش گیری هست که خیلی جالب تر از کریستال ریپورته ولی تریاله
قبل از استفاده از هر کامپوننتی بررسی کنید تا به مشکل نخورید.


شما می دونید کامپونت dropdown اینجوری هست یا نه ؟ من اونو از codeproject گرفتم . کامپوننت تاریخم ShDateTimePicker که از همین سایت گرفتم ؟

ehsan7007
سه شنبه 21 شهریور 1391, 20:22 عصر
وقتی نصب میکنی ، کرک یا لایسنس داری یا نه؟

ehsan7007
سه شنبه 21 شهریور 1391, 20:23 عصر
در ضمن ShDateTimePicker هم تریال نیست.

roolinjax
چهارشنبه 22 شهریور 1391, 09:42 صبح
با سلام
من نمی دونم چه اصراری دارید که از کامپوننت های بیرونی دات نت استفاده کنید ، مگه خود دات نت کامپوننت به درد بخور نداره ؟
از طرفی اگر کامپوننت های گرافیکی و شکیل می خواید که پروژه رو زیبا تر کنید خوب برید سراغ WPF که خیلی بهتر و سرعتش بالاتره و از طرفی دغدغه ی اکسپایر شدن رو هم ندارید.
در هر صورت تشخیص اکسپایر شدن یه کامپوننت به اسمش نیست ، توی جایی که دانلود می کنید باید بررسی کنید که حرفی از دمو ، تریال یا چیزی شبیه به این نباشه وگرنه از چند ماه بعد باید ترسید !!!