ورود

View Full Version : تبدیل تاریخ میلادی به شمسی(vb)



arsalansalar
دوشنبه 30 مهر 1386, 10:36 صبح
سلام دوستان عزیز
من برای تبدیل تاریخ میلادی به شمسی سرچ کردم و مطلب آقای مهدوی را مشاهده کردم
ولی من کدی می خواهم که به زبان vb باشد . کسی من را راهنمایی می کند؟

rtech
دوشنبه 30 مهر 1386, 11:37 صبح
دوست عزیز در مورد VB هم بود اگر کمی بیشتر جستجو میکردید پیدا میکردید :



Function prdate(ByVal jl AsString) AsString
Dim jld AsNewDate
Dim prd AsNew Globalization.PersianCalendar
jld = jl
prdate = prd.GetYear(jl).ToString & "/" & prd.GetMonth(jl).ToString & "/" & prd.GetDayOfMonth(jl).ToString
Return prdate
EndFunction

arsalansalar
دوشنبه 30 مهر 1386, 12:12 عصر
دوست عزیز من کدهای شما را وارد کردم ولی از قسمتی که با رنگ قرمز مشخص کردم خطا میگیرد.لطفا راهنماییم کنید.

Function prdate(ByVal jl AsString) AsString

Dim jld AsNewDate

Dim prd AsNew Globalization.PersianCalendar
jld = jl
prdate = prd.GetYear(jl).ToString & "/" & prd.GetMonth(jl).ToString & "/" & prd.GetDayOfMonth(jl).ToString
Return prdate
EndFunction

mp2009
دوشنبه 30 مهر 1386, 13:04 عصر
از این استفاده کن
Dim prd AsNew system.Globalization.PersianCalendar

mp2009
دوشنبه 30 مهر 1386, 13:17 عصر
اینم کد کامل به دو زبان

--------------------------------------------------------------


using System.Globalization;
using Microsoft.VisualBasic;
public class Pcalendar
{
PersianCalendar Calend = new PersianCalendar();
public string WhatDay()
{
int iDayOfMonth = Calend.GetDayOfMonth(Now);
int iMonth = Calend.GetMonth(Now);
int iYear = Calend.GetYear(Now);

return iDayOfMonth.ToString + "/" + iMonth.ToString + "/" + iYear.ToString;

}
public string WhatDayToString()
{

int iDayOfMonth = Calend.GetDayOfMonth(Now);
int iDayOfWeek = Calend.GetDayOfWeek(Now);
int iMonth = Calend.GetMonth(Now);
int iYear = Calend.GetYear(Now);
string[] SMonth = {"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی",
"بهمن", "اسفند"};
string[] SDay = {"یک شنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه", "شنبه"};

return (SDay(iDayOfWeek).ToString + " , " + iDayOfMonth + " " + SMonth(iMonth - 1).ToString + " , " + iYear.ToString);

}
}





وی بی
-----------------------------------


Imports System.Globalization
Imports Microsoft.VisualBasic
Public Class Pcalendar
Dim Calend As New PersianCalendar
Public Function WhatDay() As String
Dim iDayOfMonth As Integer = Calend.GetDayOfMonth(Now)
Dim iMonth As Integer = Calend.GetMonth(Now)
Dim iYear As Integer = Calend.GetYear(Now)
Return iDayOfMonth.ToString & "/" & iMonth.ToString _
& "/" & iYear.ToString
End Function
Public Function WhatDayToString() As String
Dim iDayOfMonth As Integer = Calend.GetDayOfMonth(Now)
Dim iDayOfWeek As Integer = Calend.GetDayOfWeek(Now)
Dim iMonth As Integer = Calend.GetMonth(Now)
Dim iYear As Integer = Calend.GetYear(Now)
Dim SMonth() As String = {"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"}
Dim SDay() As String = {"یک شنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه", "شنبه"}
Return (SDay(iDayOfWeek).ToString & " , " _
& iDayOfMonth & " " & SMonth(iMonth - 1).ToString & _
" , " & iYear.ToString)
End Function
End Class

arsalansalar
دوشنبه 30 مهر 1386, 13:48 عصر
از این استفاده کن
Dim prd AsNew system.Globalization.PersianCalendar

دوست عزیز باز هم مشکل من حل نشد و دوباره از همان قسمت خطا میگیرد در واقع اصلا
متد persiancalendar را نمی شناسد.در ضمن من از ویژوال استودیو 2003 استفاده می کنم

arsalansalar
چهارشنبه 02 آبان 1386, 10:46 صبح
دوستان عزیز کسی نمی تواند من را راهنمایی کند؟

hosseinab
چهارشنبه 02 آبان 1386, 11:16 صبح
2003 از PersianCalendar پشتیبانی نمکنه

Saeiddev
چهارشنبه 02 آبان 1386, 11:42 صبح
شما می توانید از کلاس PerianCalander اسیفاده کنید.

mp2009
چهارشنبه 02 آبان 1386, 11:53 صبح
شما می توانید از کلاس PerianCalander اسیفاده کنید.
بله دوست عزیز PerianCalander برای 2005 هست نه 2003
این دوستمون گفتند که 2003 کار میکنند پس بنابر این باید ار dll برای انجتم این کار استفاده نمایید
با یک کم جستجو به نتایج خوبی میرسید
موفق باشید

arsalansalar
چهارشنبه 02 آبان 1386, 16:13 عصر
دوست عزیز از راهنماییت ممنون.شما این dll را دارید برای دانلود بگزارید?

miladr
چهارشنبه 02 آبان 1386, 17:17 عصر
از این استفاده کن حلهههههه!


Function SHAMSI_MILADI(ByVal tarikh As Date) As Date
Dim dif, yy, mm, dd, yyyy As Integer
yyyy = tarikh.Year
mm = tarikh.Month
dd = tarikh.Day

If mm > 6 Then
dif = 186 + (mm - 7) * 30 + dd
Else
dif = 31 * (mm - 1) + dd
End If

For yy = 0 To yyyy - 1301
If yy Mod 4 = 3 Then
dif = dif + 366
Else
dif = dif + 365
End If
Next
SHAMSI_MILADI = DateAdd("D", dif, "1921/3/20")
End Function
Function MILADI_SHAMSI(ByVal tarikh As Date) As String
Dim d1 As Date
Dim y, days, m, d As Integer
Dim dif As Long
dif = DateDiff("d", "1921/3/20", tarikh, FirstDayOfWeek.Friday, FirstWeekOfYear.Jan1)

y = 1300
days = 365
Do While dif > days
dif = dif - days
y = y + 1
If y Mod 4 = 3 Then
days = 366
Else
days = 365
End If
Loop
If dif > 186 Then
dif = dif - 186
m = (dif \ 30) + 7
d = dif Mod 30
If d = 0 Then
d = 30
m = m - 1
End If
Else
m = (dif \ 31) + 1
d = dif Mod 31
If d = 0 Then
d = 31
m = m - 1
End If
End If

MILADI_SHAMSI = CStr(y) & "/" & CStr(m) & "/" & CStr(d)

End Function

mp2009
چهارشنبه 02 آبان 1386, 20:08 عصر
dll persia در سایت هست . یه جستجو کافیه

arsalansalar
چهارشنبه 02 آبان 1386, 21:56 عصر
دوست عزیز از راهنماییت خیلی خیلی ممنونم
من این تابع را استفاده کردم ولی در فراخوانی آن از کد زیر استفاده کردم ولی خطا میگیرد
می شود من را راهنمایی کنید؟

Call SHAMSI_MILADI(ByVal tarikh AsDate) AsDate
a = SHAMSI_MILADI

از کلمه ByVal خطا می گیرد و خطای Expression Expected را می گیرد.

miladr
چهارشنبه 02 آبان 1386, 22:39 عصر
کد رو توی تگ کد بزارین که بشه فهمید چی نوشتین لطفا.
من اینطوری استفاده می کنم
فکر کنم تابع رو بد فراخوانی می کنی باید توی فراخوانی تابع یه متغیر بهش پاس بدی

arsalansalar
جمعه 04 آبان 1386, 22:11 عصر
دوست عزیز من برنامه شما را نوشتم ولی نمیتوانم تابع را فرا بخوانم و تاریخ را در یک تکست باکس نمایش دهم.لطفا نحوه انجام این کار را برای من توضیح بدهید.

miladr
شنبه 05 آبان 1386, 11:50 صبح
اینرو امتحان کن

dim mydate as new datetime
textbox1.text=SHAMSI_MILADI(mydate)

maryamireng
شنبه 10 آذر 1386, 14:29 عصر
من از فایل fardate استفاده کردم اول choose item کردم بعد فایل dll را browse کردم ولی در toolbox نبود . چگونه باید از آن استفاده کنم.

jasadeghi
شنبه 10 آذر 1386, 20:00 عصر
دروود به شما

چرا از یک dll آماده استفاده نمی کنید.

به این تاپیک یک سری بزنید.

http://barnamenevis.org/forum/showthread.php?t=77823

با آروزی بهروزی.