PDA

View Full Version : فارسی کردن تاریخ



radan63
شنبه 02 اردیبهشت 1385, 16:03 عصر
1.من یک datagridدارم که یک ستون آن نمایش تاریخ را بر عهده دارد.
تاریخ آن به صورت 1/1/1980 12:00:00 am به طور مثال نمایش داده می شود من می خواهم تاریخ آن به تاریخ فارسی تبدیل شود.به صورت:
1385/2/2 12:30 صبح شنبه البته به طور مثال .
یا حتی فقط تاریخ فارسی بدون ساعت نمایش داده شود
2.من وقتی از یک datareaderاستفاده میکنم برای یک datagridوقتی allowpaging آن را میکنم
این کاررا انجام نمی دهد وپیغام می دهد.ولی وقتی از datasetاستفاده میکنم مشکلی پیش نمی آید.لطفا کمک کنید.

nazaninam
شنبه 02 اردیبهشت 1385, 17:33 عصر
سوال تکراریست یک جستجو بفرمایید هم در مورد تاریخ زیاد بحث شده هم در مورد paging

eshaghi
دوشنبه 03 اردیبهشت 1386, 12:24 عصر
Private Function DateShamsi() As String
Dim T As Int32
Dim S As String
T = ValDayMiladi()
S = ValDaySal(T - 226900)
DateShamsi = S

End Function

Private Function ValDayMiladi() As Int32
Dim x(2) As Int16
Dim v() As Byte = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}
Dim i As Byte
Dim Sum As Int32
Sum = 0
x(0) = Convert.ToInt16(Now.Year)
x(1) = Convert.ToInt16(Now.Month)
x(2) = Convert.ToInt16(Now.Day)
If x(1) = 1 Then
Sum = x(2)
x(2) = 0
Else
For i = 0 To x(1) - 2
Sum = Sum + v(i)
Next
End If
ValDayMiladi = x(0) * 365 + x(0) \ 4 + 1 + Sum + x(2)

End Function

Private Function ValDaySal(ByVal Digit As Int32) As String
Dim x, y, z As Int32
Dim a As Int16
Dim str As String
x = Digit
y = (4 * x) \ ((4 * 365) + 1)
z = (y * 365) + (y \ 4)
a = x - z
str = TarikhShamsi(a)
If a = 0 Then
y = y - 1
End If
ValDaySal = str & "/" & y.ToString()

End Function

Private Function TarikhShamsi(ByVal b As Int16) As String
Dim v() As Int16 = {31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336, 365}
Dim Mon, Day As Int16
Dim i As Int16
If b = 366 Or b = 0 Then
Mon = 12
Day = 30
Else
Mon = 1
Day = b
For i = 10 To 0 Step -1
If b > v(i) Then
If b <> v(i + 1) Then
Mon = i + 2
Day = b - v(i)
Exit For
Else
Mon = i + 2
Day = v(i + 1) - v(i)
Exit For
End If
End If
Next
End If
TarikhShamsi = Day.ToString & "/" & Mon.ToString
End Function

hamhik
دوشنبه 03 اردیبهشت 1386, 22:31 عصر
در مورد تاریخ فارسی تو فروم vb.net سرچ کنی dllش رو گیر می یاری

hamid58
دوشنبه 03 اردیبهشت 1386, 23:01 عصر
1-در ASP.NET 2.0 برای تبدیل تاریخ میلادی به تاریخ شمسی فارسی یک کلاس وجود داره به نام PersianCalendar Class که در System.Globalization قرار داره . در این کلاس متدهایی وجود داره که شما به راحتی میتونی تبدیل تاریخ هارو انجام بدی . در ضمن کلی امکانات دیگه وجود داره . خودتون باید ببینید :
اینم لینک مربوطه در MSDN که هم برای VB مثال داره هم c# :

http://msdn2.microsoft.com/en-us/library/system.globalization.persiancalendar.aspx

اگر هم ASP.NET 1.0 مینویسید از این dll که آقای شهاب فر نوشتند استفاده کنید :

http://www.persiadevelopers.com/articles/persia.aspx

2- Gridview و یا datagrid فقط در حالتی که از dataset استفاده کرده باشید قابلیت paging داره و با datareader امکانپذیر نیست ، یعنی کلا قابلیتش وجود نداره وگرنه مشکل کار شما نیست . حالا چه اصراری دارید که ار datareader استفاده کنید ؟!