خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
با سلام و احترام
دوستان گرامی من برای افزودن روز به تاریخ شمسی از کد زیر استفاده می کنم.
Dim mypersia As New System.Globalization.PersianCalendar()
my_lbl.text = mypersia.AddDays(Date2Persian_Str(DateTime.Now).To String, -180).ToString("yyyy/MM/dd")
و کد تابع Date2Persian_Str :
Public Function Date2Persian_Str(dt As System.DateTime) As String
Dim FarsiDate As New System.Globalization.PersianCalendar()
Dim Day As String = FarsiDate.GetDayOfMonth(dt).ToString()
Dim Month As String = FarsiDate.GetMonth(dt).ToString()
Dim Year As String = FarsiDate.GetYear(dt).ToString()
If Day.Length = 1 Then
Day = "0" & Day
End If
If Month.Length = 1 Then
Month = "0" & Month
End If
Return (Year & "/" & Month & "/" & Day)
End Function
تا به امروز این کد بدون مشکل اجرا شده ولی امروز متوجه شدم در برخی از تاریخ ها (مثل 1401/02/30) اگر تنظیمات Date & Time سرور برروی شمسی نباشه، اجرای این کد خطای زیر را نمایش می دهد.
Conversion from string "1401/02/29" to type 'Date' is not valid
از اونجایی که هاستینگ حاضر به تغییر تنظیمات به شمسی نیست ممنون میشم راهنمایی بفرمایید چطور میشه این مشکل رو برطرف کرد. تشکر
نقل قول: خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
سلام.
خطایی که ارسال شده، خطای تبدیل تاریخ از رشته به Date هستش بنظر من Date فقط مقدار میلادی رو می گیره برای همین این خطا رو ارسال کرد بجای اون تاریخ شمسی بصورت دستی یک تاریخ میلادی بصورت رشته تایپ کن ببین خطا ارسال می شه یا نه. تا مطمئن شیم
نقل قول: خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
سلام و روز خوش
کد رو چک نکردم ولی همین که گفتین بعضی از تاریخ ها مثل 1401/02/29 مشخص هست که کد تاریخ رو میلادی در نظر گرفته،
چون ماه فوریه 28 روزه است و در سالهای کبیسه 29 روزه میشه.
در ضمن اهمیتی نداره که location کامپیوتری که کد رو اجرا میکنه چی باشه (مگر در فرمت پیشفرض تاریخ و ساعت و پول و ...) ،
شما از persiancalendar استفاده میکنین.
نقل قول: خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
نقل قول:
نوشته شده توسط
ROSTAM2
سلام.
خطایی که ارسال شده، خطای تبدیل تاریخ از رشته به Date هستش بنظر من Date فقط مقدار میلادی رو می گیره برای همین این خطا رو ارسال کرد بجای اون تاریخ شمسی بصورت دستی یک تاریخ میلادی بصورت رشته تایپ کن ببین خطا ارسال می شه یا نه. تا مطمئن شیم
درود بر شما، با تاریخ میلادی مشکلی نداره و خروجی هم به میلادی نمایش داده میشه. با توجه به نکته ای که فرمودین کد رو به شکل زیر تغییر دادم و مشکل حل شد.
سپاس از لطف شما
lbl_date.Text = Date2Persian_Str(mypersia.AddMonths(DateTime.Now, -6))
نقل قول: خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
نقل قول:
نوشته شده توسط
mazoolagh
سلام و روز خوش
کد رو چک نکردم ولی همین که گفتین بعضی از تاریخ ها مثل 1401/02/29 مشخص هست که کد تاریخ رو میلادی در نظر گرفته،
چون ماه فوریه 28 روزه است و در سالهای کبیسه 29 روزه میشه.
در ضمن اهمیتی نداره که location کامپیوتری که کد رو اجرا میکنه چی باشه (مگر در فرمت پیشفرض تاریخ و ساعت و پول و ...) ،
شما از persiancalendar استفاده میکنین.
درود، از اونجایی که همین کد بدون مشکل و خطا تاریخ 1401/02/29 رو در لوکال کانورت میکنه، به همین علت حدس زدم بخاطر تفاوت تنظیمات تاریخ و ساعت سرور این مشکل به وجود اومده باشه.
تشکر از شما
نقل قول: خطا در تایع DateTime شمسی برای افزودن روز به تاریخ در برخی از تاریخ ها
مقدار بازگشتی متد adddays از نوع datetime هست که باید از متد تبدیلی که نوشتید به جای tostring استفاده کنید.