سلام
لطفا در مورد رفع مشکل تاریخ در تاریخهای 31 ام ماه راهنمایی کنید. چون در این تاریخ ها تاریخ بهم میریزه و خطا میده نرم افزار. نرم افزار من با سی شارپ نوشته شده و بانک اطلاعاتی Sql Server استفاده شده.
فیلد تاریخ رو از نوع string در نظر گرفتم و برای تبدیل تاریخ به شمسی از دستور زیر استفاده کردم
String.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(calender.Text));
با سلام و درود
برای رفع این مشکل پیشنهاد می شود از ویندوز 10 استفاده نمایید چون ویندوز 10 از تاریخ شمسی پشتیبانی می کند و مشکلی بابت تاریخ های 31 ام به وجود نمی آورد.
اگر از سایر ویندوزها استفاده می کنید باید با نوشتن توابعی تاریخ ویندوز را کنترل نمایید که در این لینک آموزش برای ویندوز فرم موجود می باشد.
موفق باشید
سلام و روز بخير
ميتونيد از دستورات زير استفاده کنيد:
private void Date()
{
PersianCalendar pc = new PersianCalendar();
int year = pc.GetYear(DateTime.Now);
int month = pc.GetMonth(DateTime.Now);
int day = pc.GetDayOfMonth(DateTime.Now);
string Date = year.ToString() + "/" + month.ToString().PadLeft(2, '0') + "/" + day.ToString().PadLeft(2, '0');
lbl_Date.Text = Date;
}
فقط درنظر داشته باشيد که بايد از کلاس مربوط به system.globalization هم استفاده کنيد.
سلام دستور زير مشکلتوپن رو حل ميکنه.
//------------- بدست اوردن تايخ شمسي و زمان کنوني -------------
var currentDate = DateTime.Now;
///------ حل مشکل خطا در تايخ اي 31 ام ماه ها----------
///
// create an instance of culture
CultureInfo info = new CultureInfo("fa-Ir");
//set Persian calendar to it without get exception
info.DateTimeFormat.Calendar = new PersianCalendar();
Thread.CurrentThread.CurrentCulture = info;
///------------ نمايش ماه به صورت حروف
///--- يکشنبه 31 شهريور 1398 -----
string pCalendar = currentDate.ToString("D", info);
///------------ نمايش ماه به صورت حروف
///--- 1398/06/31 -----
string pCalendarShort = currentDate.ToString("yyyy/MM/dd");
///نمايش زمان
string currentTime = currentDate.ToString("hh:mm");
//------------------------------------------------
در صورتی که از ویندوز 10 استفاده می کنید تاریخ ویندوزتون باید حتما به صورت شمسی تنظیم شده باشه. تصویر زیر رو ملاحظه بفرمایید
با سلام. دوست گرامی در هنگام فرمت کردن تاریخ شمسی مثلا از 1398/1/1 به 1398/01/01 به هیچ وجه از دستور Convert.ToDateTime سیستم استفاده نکنید چون این تابع جهت تبدیل رشته به تاریخ میلادی است نه شمسی! مگر اینکه تاریخ شمسی روی سیستم نصب و فعال باشد که این امر فعلا در ویندوز 10 میسر می باشد.
بهترین کار این است که به روش زیر عمل کنید.
ابتدا در بدنه فرم تابع زیر را قرار دهید.
public static string FormatStringDate(string OldDate)
{
string NewDate = "";
// validation omitted
System.String[] userDateParts = OldDate.Split(new[] { "/" }, System.StringSplitOptions.None);
int Year = int.Parse(userDateParts[0]);
int Month = int.Parse(userDateParts[1]);
int Day = int.Parse(userDateParts[2]);
return NewDate;
}
سپس با استفاده از کد زیر تاریخ شمسی خود را به فرمت صحیح تبدیل کنید.
string NewDate = FormatStringDate(calender.Text);
فقط یه نکته یادم رفت بگم که تابع بالا مخصوص ایجاد در بدنه نرم افزار است اگر میخواهید تابع را در بدنه فرم ایجاد کنید کلمه Static را از تابع حذف کنید.
ممنون از شما Sowgandi
بنظرم راحت ترین کار اینه که کامپوننت تاریخ رو عوض کن و از کامپوننت beh component استفاده کن مشکلت حل میشه یه سرچ توی اینترنت بکن پیداش می کنی
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
346
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
309
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4263
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
654
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3170
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3250
- پاسخ :
1
|
تاریخ :
1403/04/12
- ساعت :
07:27:00 PM
- بازدید :
656
- پاسخ :
0
|
تاریخ :
1403/01/29
- ساعت :
08:08:00 AM
- بازدید :
685
- پاسخ :
4
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
56
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
96
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|