مشکل تاریخ شمسی در سی شارپ
سلام
لطفا در مورد رفع مشکل تاریخ در تاریخهای 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 استفاده کن مشکلت حل میشه یه سرچ توی اینترنت بکن پیداش می کنی
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول
- مشخص کردن حداقل تعداد کاراکتر در تکست باکس wpf