با سلام
من ویندوز تعویض کردم..از 8 به 10 حالا تو اجرای برنامه این خطا را میده خطا فرمت تاریخ یا ساعت
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
Additional information: String was not recognized as a valid DateTime.
دقیقا نمیدونم مال چیه
توضیحات شما برای پاسخگویی کامل نیست و جزییات رو اشاره نکردید. ولی یک احتمالی وجود داره. در ویندوز 10 شما میتونید از قسمت کنترل پنل تاریخ ویندوز رو شمسی کنید
مطابق تصویر بالا. یکبار تاریخ ویندوز خودتون رو شمسی کنید ببینید مشکل حل میشه یا نه. در صورتی که مشکل حل نشد بهتره کدهایی که برای تاریخ نوشتید رو قرار بدید. با توجه به توضیحاتتون در حال حاضر همین راهنمایی رو میشه کرد.
//نمایش تاریخ
این هم فرمتی که برای نمایش نوشتم
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar(); //4
lbl_date.Text = string.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(pc.GetYear(DateTime.Now) + "/" + pc.GetMonth(DateTime.Now) + "/" + pc.GetDayOfMonth(DateTime.Now)));//13 تهیه ماژولها
publicvaliabel.todaydate = lbl_date.Text.Trim(); //13
سلام.
این مشکل رو اکثر دوستانی که با تاریخ شمسی کار میکنن باهاش مواجه میشن! وقتی شما از تابع Convert.ToDateTime استفاده می کنید، این تابع مقدار رشته شما رو با توجه به تاریخ فعال ویندوز محاسبه میکنه و چنانچه تاریخ سیستم شمسی نباشه ممکنه برخی از روزهای سال شمسی که وارد میکنید در تاریخ پیش فرض سیستم که معمولا میلادی هست نباشه. مثلا تاریخ 1399/04/31 در تاریخ میلادی وجود نداره! خب اینجا سیستم نمیتونه اون رشته شما رو به تاریخ تبدیل کنه و دچار خطا میشه. برای رفع این مشکل یا باید تاریخ سیستمتون رو روی شمسی فعال کنید و یا اینکه از این تابع استفاده نکنید.
بنابراین بهتر اینه که شما کدت رو به شکل زیر تغییر بدی تا چنانچه نرم افزار رو در سیستمی اجرا کردی که تاریخ شمسی نداشت به مشکل نخوری.
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
lbl_date.Text = pc.GetYear(DateTime.Now).ToString("0000/") + pc.GetMonth(DateTime.Now).ToString("00/") + pc.GetDayOfMonth(DateTime.Now).ToString("00");
publicvaliabel.todaydate = lbl_date.Text.Trim();
با سلام و تشکر خدمت شما دوست عزیز... ممنون مشکل تاریخ فرم لاگین با این کد که شما زحمتشو کشیدی حل شد.
حالا کد های سرچ از تاریخ تا تاریخ هم زحمتشو بکشید ممنون میشم
private string sercheconditnal() //15
{
string dateaz =string.Format("{0:yyyy/MM/dd}",Convert.ToDateTime( persianDateTimePicker_az.Value.Year.ToString() + "/" + persianDateTimePicker_az.Value.Month.ToString() + "/" + persianDateTimePicker_az.Value.Day.ToString()));
string dateta= string.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(persianDateTimePicker_ta.Value.Year.ToString() + "/" + persianDateTimePicker_ta.Value.Month.ToString() + "/" + persianDateTimePicker_ta.Value.Day.ToString()));
string searchstring = " and dateremember Between '" + dateaz + "' and'" + dateta + "'"; //between برای سرچ بین دو تاریخ استفاده میشه 15
if (txt_subject.Text!=" ")
{
searchstring += " and [subject] like '%" + txt_subject .Text.Trim() + "%'"; //like برای جستجو در متن استفاده میشه15
}
return searchstring;
} //15
سلام مجدد. برای Datepicker ها یه خرده متفاوت هست. من نمیدونم Datepicker شما از چه نوعی هست! چون هر کامپوننت خواص مربوط به خودشو داره ولی به هر حال من کلی توضیح میدم.
اکثر Datepicker ها یک خاصیت Text دارند که ما از اون استفاده میکنیم تا اگه تاریخ رو به صورت تایپی وارد کردید هم مشکلی پیش نیاد.
ابتدا در بدنه نرم افزار خود مثلا در کلاس PublicVariable تابع زیر رو وارد کنید.
public static string ShamsiDateFormatString(string Date)
{
try
{
System.String[] userDateParts = Date.Split(new[] { "/" }, System.StringSplitOptions.None);
int Year = int.Parse(userDateParts[0]);
int Month = int.Parse(userDateParts[1]);
int Day = int.Parse(userDateParts[2]);
if (Month > 12 || Month < 1) { return null; }
if (Day > 31 || Day < 1) { return null; }
return Year.ToString("0000/") + Month.ToString("00/") + Day.ToString("00");
}
catch (Exception)
{
return null;
}
}
این تابع مقدار تاریخ شمسی از نوع رشته رو دریافت و بررسی میکنه و فرمت صحیح 10 رقمی رو از نوع رشته دوباره برمیگردونه. حالا توی کل نرم افزارتون هر وقت خواستید هر نوع تاریخ شمسی رو بررسی و یا فرمت دهی کنید میتونید از این تابع استفاده کنید. البته این تابع هنوز جای توسعه داره ولی فعلا کارتون رو راه میندازه.
برای استفاده از این تابع میتونید از کد زیر استفاده کنید.
string NewDate = PublicVariable.ShamsiDateFormatString("OldDate"); /// ورودی از نوع رشته
بنابراین کدهایی که بالا نوشتید رو به شکل زیر تغییر بدید.
private string sercheconditnal() //15
{
string dateaz = PublicVariable.ShamsiDateFormatString(persianDateTimePicker_az.Text);
string dateta = PublicVariable.ShamsiDateFormatString(persianDateTimePicker_ta.Text);
string searchstring = " and dateremember Between '" + dateaz + "' and'" + dateta + "'"; //between برای سرچ بین دو تاریخ استفاده میشه 15
if (txt_subject.Text != " ")
{
searchstring += " and [subject] like '%" + txt_subject.Text.Trim() + "%'"; //like برای جستجو در متن استفاده میشه15
}
return searchstring;
}
کدها رو استفاده کنید و در صورتی که هنوز مشکل داشتید بگید تا بررسی کنیم.
با سلام
دوست عزیز من این کد ها در بدنه پروژه نوشتم.
حالا خطا هنگام اجرا نمیده و عملا سرچ انجام نمیشه... مثلا از تاریخ فلان تا فلان سرچ نمیشه
آیا راه حلی برای این هست
تاریخ :
1404/01/17
- ساعت :
05:35:00 PM
- بازدید :
77
- پاسخ :
0
|
تاریخ :
1399/11/25
- ساعت :
11:22:00 AM
- بازدید :
3921
- پاسخ :
2
|
تاریخ :
1403/12/02
- ساعت :
12:09:00 AM
- بازدید :
295
- پاسخ :
1
|
تاریخ :
1398/07/08
- ساعت :
12:21:00 AM
- بازدید :
3062
- پاسخ :
2
|
تاریخ :
1403/11/23
- ساعت :
08:24:00 PM
- بازدید :
210
- پاسخ :
2
|
تاریخ :
1399/11/10
- ساعت :
10:01:00 PM
- بازدید :
7197
- پاسخ :
4
|
تاریخ :
1399/04/09
- ساعت :
08:51:00 PM
- بازدید :
3108
- پاسخ :
1
|
تاریخ :
1399/03/25
- ساعت :
08:58:00 PM
- بازدید :
3851
- پاسخ :
1
|
تاریخ :
1400/12/18
- ساعت :
10:24:00 AM
- بازدید :
2127
- پاسخ :
1
|
تاریخ :
1401/01/26
- ساعت :
12:14:00 PM
- بازدید :
3021
- پاسخ :
1
|
تاریخ :
1404/01/16
- ساعت :
07:20:00 PM
- بازدید :
119
- پاسخ :
1
|
تاریخ :
1404/01/17
- ساعت :
05:35:00 PM
- بازدید :
77
- پاسخ :
0
|
تاریخ :
1404/01/07
- ساعت :
05:02:00 AM
- بازدید :
116
- پاسخ :
1
|
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1329
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
84
- پاسخ :
1
|
تاریخ :
1398/08/23
- ساعت :
09:16:00 PM
- بازدید :
9879
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
12:18:00 PM
- بازدید :
48
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
10:39:00 AM
- بازدید :
52
- پاسخ :
1
|
تاریخ :
1404/01/02
- ساعت :
05:05:00 PM
- بازدید :
69
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
64
- پاسخ :
1
|