صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 62

نام تاپیک: تاریخ شمسی

  1. #1

    Exclamation تاریخ شمسی

    این بخش محل جمع آوری کدها ، کلاسها و کامپوننتهائی است که به نحوی در فرآیند مبادله و تبدیل و ترجمه از-به تاریخ شمسی مربوط هستند . اگر چنین کدی نوشته اید و مایلید در اختیار بقیه بگذارید همراه با توضیحات لازم در این بخش ضمیمه کنید . کدتان باید حاوی :
    • توابع ، کلاسها و-یا کامپوننت هائی برای انواع مبادلات و تبدیلهای تاریخی که از تاریخ شمسی حمایت میکنند ( سورس کد ، و نه فایل باینری مانند DLL و اکتیواکس و ... )
    • حداقل یک برنامه نمایشی که از آن استفاده میکند ( سورس کد ، و نه فایل باینری اجرائی )
    • و ترجیحا" یک مستند هر چند کوتاه فارسی در مورد نحوهء عملکرد و الگوریتم تبدیل مورد استفاده و ...
    باشد . زبان و محیط و کامپایلر و حتی الگوریتم ها و روتینهای مورد استفاده مطرح نیستند و از هر کدی مربوط به هر محیط و سیستم عامل و کامپایلری استقبال میشود . تلاش میکنیم وقتی آرشیو مناسبی تهیه شد همه آنها را در قالب یک بستهء شکیل تحت لیسانس سایت برنامه نویس به همراه نام و مشخصات برنامه نویسان آنها به شکل مناسبی منتشر کنیم . (احتمالا یک Homepage هم در سایت برنامه نویس برای نگهداری از آن در نظر گرفته شود ) این کمک میکند که مسئله تاریخ شمسی یکبار بصورت متجمع و یکپارچه برطرف شود و این بسته به مرجعی برای برنامه نویسان فارسی زبان تبدیل شود . افرادی که همکاری مناسب و فعالی داشته باشند مدال همکاری سایت برنامه نویس را هم دریافت میکنند .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  2. #2
    این لیستی از کدهائی است که به نظر من میرسد باید در چنین بسته ای وجود داشته باشند :
    • C : قابل استفاده در کلیه محیطها / کامپایلرهای سی
    • ++C : ایضا
    • Activex-COM Library : ویژوال بیسیک ؛ VC
    • VCL : دلفی و سی++ بیلدر
    • QT : برای محیطها و کامپایلرهای سازگار
    • Java Class
    • Python Library
    • Ruby Module
    • کامپوننت دات نت : برای زبانهای سازگار ( حمایت از مونو ؟ )
    • PHP Library : ترجیحا" Class ( سازگاری با VCL for PHP ؟ )
    • جاوا اسکریپت - وی بی اسکریپت : صفحات وب
    در صورت لزوم پیشنهاد بدهید تا این لیست تکمیل شود و اگر قبلا در مورد هر کدام کاری انجام شده است معرفی کنید . این تاپیک بعدا" به بخش Open Source منتقل میشود
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    مشهد
    پست
    132
    پیشنهاد می کنم که دوستان ضمن ارائه سورس کد، نمونه اجرایی و مستند فارسی، مجوز (License) استفاده از سورس رو هم اعلام کنند.
    ضمنا ظاهرا Perl فراموش شده است.

  4. #4
    کاش در مورد مشکلات دیگر زبان فارسی نظیر تبدیل کد پیج داس به ویندوز یا برعکس و دیگر مشکلات هم مطالبی عنوان بشه

  5. #5
    کد به زبان Visual Basic .Net

    این کد مربوط به یک ماژول از یک سیستم Medium Size هستش. کد اصلی کمی مفصل تر از این کد هست و سعی کردم کمی از شاخ و برگ هاش بزنم تا قابل فهم تر باشه. به هر حال این کد حدود 2 ساله که داره روی وب استفاده میشه و مشکلی نداشته. از الگوریتم میلادی به شمسی اون هم مدت 4 ساله که روی یک سیستم کنترل پروژه داره استفاده میشه که از اون هم هنوز مشکلی گزارش نشده

    برای توضیح عرض کنم که با استفاده از از این کد می تونید :
    1) تاریخ های میلادی، شمسی و فمری رو به هم تبدیل کنید. با استفاده از متدهای XToY
    2) تعداد روزهای یک ماه رو بدست بیارید GetDaysInMonthX

    به هر حال چون این کد برای استفاده خاص خصوصی سازی شده ممکنه کمی گنگ باشه اما به هر حال اگر سوالی بود مطرح کنید و من هم سعی می کنم با ویرایش کردن همین پست (برای شلوغ نشدن تاپیک) سوالات رو جواب بدم.

    Imports System.Globalization
    Public Class XDate
    Private mvarDay As Int16
    Private mvarMonth As Int16
    Private mvarYear As Int32

    Function SetDate(ByVal year As Int32, ByVal month As Int16, ByVal day As Int16) As XDate
    mvarYear = year
    mvarMonth = month
    mvarDay = day
    Return Me
    End Function

    Function SetMonth(ByVal month As Int16) As XDate
    mvarMonth = month
    Return Me
    End Function
    Property Day() As Int16
    Get
    Return mvarDay
    End Get
    Set(ByVal Value As Int16)
    mvarDay = Value
    End Set
    End Property

    Property Month() As Int16
    Get
    Return mvarMonth
    End Get
    Set(ByVal Value As Int16)
    mvarMonth = Value
    End Set
    End Property

    Property Year() As Int32
    Get
    Return mvarYear
    End Get
    Set(ByVal Value As Int32)
    mvarYear = Value
    End Set
    End Property

    #Region "DaysInMonth"
    Function GetDaysInMothJalali() As Int16
    Dim r As Int16
    If Me.Month < 12 Then r = 30
    If Me.Month < 7 Then r = 31
    If Me.Month = 12 Then
    If (Me.Year - 1303) Mod 4 = 0 Then
    r = 30
    Else
    r = 29
    End If
    End If
    Return r
    End Function

    Function GetDaysInMothGregorian() As Int16
    Return Date.DaysInMonth(Me.Year, Me.Month)
    End Function

    Function GetDaysInMothHijri() As Int16
    Dim ghCal As New HijriCalendar
    ghCal.HijriAdjustment = -1

    Return ghCal.GetDaysInMonth(Me.Year, Me.Month)
    End Function
    #End Region

    #Region "Converts"
    Function GregorianToHijri() As XDate
    Dim ghCal As New HijriCalendar
    ghCal.HijriAdjustment = -1
    Dim cd As New DateTime(Me.Year, Me.Month, Me.Day)
    Dim r As New XDate
    r.Day = ghCal.GetDayOfMonth(cd)
    r.Month = ghCal.GetMonth(cd)
    r.Year = ghCal.GetYear(cd)
    Return r
    End Function

    Function HijriToGregorian() As XDate
    Dim myCal As New HijriCalendar
    myCal.HijriAdjustment = -1
    Dim myDT As New DateTime(Me.Year, Me.Month, Me.Day, myCal)
    Dim r As New XDate(myDT.Year, myDT.Month, myDT.Day)
    Return r
    End Function

    Function HijriToJalali() As XDate
    Return Me.HijriToGregorian.GregorianToJalali
    End Function

    Function JalaliToHijri() As XDate
    Return Me.JalaliToGregorian.GregorianToHijri
    End Function

    Function GregorianToJalali() As XDate
    Dim MDayMonth(12) As Int16, SDayMonth(12) As Int16
    Dim MYear As Int32, MMonth As Int16, MDay As Int16
    Dim gYear As Int32, gMonth As Int16, gDay As Int16
    Dim SYear As Int32, SMonth As Int16, SDay As Int16
    Dim YearBuf, MonthBuf, DayBuf
    Dim MDate, SDate
    Dim DayCount, Deference
    Dim i
    Dim StrDate As String = Me.Year & "/" & Me.Month & "/" & Me.Day
    Dim GetShamsiDate As String
    Dim Result As String

    Deference = 79
    DayCount = 0
    SMonth = 1
    YearBuf = ""
    MonthBuf = ""
    DayBuf = ""

    For i = 1 To 6
    SDayMonth(i) = 31
    Next
    For i = 7 To 11
    SDayMonth(i) = 30
    Next
    SDayMonth(12) = 29

    MDayMonth(1) = 31
    MDayMonth(2) = 28
    MDayMonth(3) = 31
    MDayMonth(4) = 30
    MDayMonth(5) = 31
    MDayMonth(6) = 30
    MDayMonth(7) = 31
    MDayMonth(8) = 31
    MDayMonth(9) = 30
    MDayMonth(10) = 31
    MDayMonth(11) = 30
    MDayMonth(12) = 31


    StrDate = Left(StrDate, 10)
    MDate = CDate(StrDate)
    MYear = DatePart("YYYY", MDate)
    MMonth = DatePart("m", MDate)
    MDay = DatePart("d", MDate)

    gYear = MYear
    gMonth = MMonth
    gDay = MDay

    If Math.Abs(MYear - 1996) Mod 4 = 0 And MMonth > 2 Then MDay = MDay + 1
    If Math.Abs(MYear - 1997) Mod 4 = 0 And MMonth < 4 Then
    If MMonth < 3 Then
    MDay = MDay + 1
    Else
    If MDay < 20 Then MDay = MDay + 1
    End If
    End If
    DayCount = MDay

    Do While MMonth > 0
    MMonth = MMonth - 1
    If (MMonth = 0) And (DayCount < Deference) Then
    MMonth = 12
    MYear = MYear - 1
    End If
    If MMonth > 0 Then DayCount = DayCount + MDayMonth(MMonth)
    Loop

    DayCount = DayCount - Deference
    Do While (SMonth < 12) And (DayCount > SDayMonth(SMonth))
    DayCount = DayCount - SDayMonth(SMonth)
    SMonth = SMonth + 1
    Loop
    SDay = DayCount
    SYear = MYear - 621
    If SDay = "0" And SMonth = 1 Then
    SDay = "30"
    SMonth = "12"
    SYear = SYear - 1
    End If
    If SDay < 10 Then DayBuf = "0"
    If SMonth < 10 Then MonthBuf = "0"

    If Math.Abs(gYear - 1995) Mod 4 = 0 And gMonth = 3 And gDay = 20 Then
    Result = Trim(gYear - 622) & ".12.29"
    GetShamsiDate = Trim(Result)
    ElseIf Math.Abs(gYear - 1997) Mod 4 = 0 And gMonth = 3 And gDay = 19 Then
    Result = Trim(gYear - 622) & ".12.29"
    GetShamsiDate = Trim(Result)
    ElseIf Math.Abs(gYear - 1996) Mod 4 = 0 And gMonth = 3 And gDay = 19 Then
    Result = Trim(gYear - 622) & ".12.29"
    GetShamsiDate = Trim(Result)
    ElseIf Math.Abs(gYear - 1998) Mod 4 = 0 And gMonth = 3 And gDay = 20 Then
    Result = Trim(gYear - 622) & ".12.29"
    GetShamsiDate = Trim(Result)
    Else
    Result = CStr(SYear) + "." + MonthBuf + CStr(SMonth) + "." + DayBuf + CStr(SDay)
    GetShamsiDate = Trim(Result)
    End If
    Dim d As New XDate
    Dim dd() As String = GetShamsiDate.Split(".")
    d.Day = dd(2)
    d.Month = dd(1)
    d.Year = dd(0)
    Return d
    End Function

    Function JalaliToGregorian() As XDate
    Dim iyear As Int32 = Me.Year
    Dim imonth As Int16 = Me.Month
    Dim iday As Int16 = Me.Day
    Dim epbase As Int64, epyear As Int64, mdays As Int16, jdn As Int64
    Dim l As Int64, k As Int64, n As Int64, ii As Int64, j As Int64

    If iyear >= 0 Then
    epbase = iyear - 474
    Else
    epbase = iyear - 473
    End If

    epyear = 474 + (epbase Mod 2820)
    If imonth <= 7 Then
    mdays = (CLng(imonth) - 1) * 31
    Else
    mdays = (CLng(imonth) - 1) * 30 + 6
    End If
    jdn = CLng(iday) + mdays + Fix(((epyear * 682) - 110) / 2816) _
    + (epyear - 1) * 365 _
    + Fix(epbase / 2820) * 1029983 _
    + (1948321 - 1)

    l = 0 : k = 0 : n = 0 : ii = 0 : j = 0

    If (jdn > 2299160) Then
    l = jdn + 68569
    n = ((4 * l) \ 146097)
    l = l - ((146097 * n + 3) \ 4)
    ii = ((4000 * (l + 1)) \ 1461001)
    l = l - ((1461 * ii) \ 4) + 31
    j = ((80 * l) \ 2447)
    iday = l - ((2447 * j) \ 80)
    l = (j \ 11)
    imonth = j + 2 - 12 * l
    iyear = 100 * (n - 49) + ii + l
    Else
    l = 0 : k = 0 : n = 0 : ii = 0 : j = 0
    j = jdn + 1402
    k = ((j - 1) \ 1461)
    l = j - 1461 * k
    n = ((l - 1) \ 365) - (l \ 1461)
    ii = l - 365 * n + 30
    j = ((80 * ii) \ 2447)
    iday = ii - ((2447 * j) \ 80)
    ii = (j \ 11)
    imonth = j + 2 - 12 * ii
    iyear = 4 * k + n + ii - 4716
    End If
    Dim d As New XDate
    d.Year = iyear
    d.Month = imonth
    d.Day = iday
    Return (d)
    End Function
    #End Region


    Public Sub New()

    End Sub
    Public Sub New(ByVal year As Int64, ByVal month As Int16, ByVal day As Int16)
    Me.Year = year
    Me.Month = month
    Me.Day = day
    End Sub

    End Class
    طرز استفاده:
            Dim dtToday As New XDate(Now.Year, Now.Month, Now.Day)
    txtGregorian.Text = dtToday.Day & "/" & dtToday.Month & "/" & dtToday.Year
    txtGregorianDays.Text = dtToday.GetDaysInMothGregorian

    dtToday = dtToday.GregorianToJalali
    txtJalali.Text = dtToday.Day & "/" & dtToday.Month & "/" & dtToday.Year
    txtJalaliDays.Text = dtToday.GetDaysInMothJalali

    dtToday = dtToday.JalaliToHijri
    txtHijri.Text = dtToday.Day & "/" & dtToday.Month & "/" & dtToday.Year
    txtHijriDays.Text = dtToday.GetDaysInMothHijri
    * به طور کلی هر نمونه از شئ XDate می تونه یک تاریخ رو (به صورت روز در پراپرتی Day ، ماه در پراپرتی Month و سال در پراپرتی Year) ذخیره کنه. که البته کنترلی روی بازه تاریخ هم نداره. ضمنا شما نمی تونید تشخیص بدید که تاریخی که الان در یک نمونه نگهداری شده از کدام نوع هست.

    * دقت کنید که این شما هستید که باید بدونید در حال حاضر کدام نوع تاریخ (میلادی، شمسی یا قمری) در آبجکت شما ذخیره شده. سپس می تونید با توجه به اینکه مثلا نوع جاری X است و می خواهیم به نوع Y تبدیلش کنیم ار متد های XToY استفاده کنید. این متد ها هم مجددا یک نمونه از شئ XDate برمی گردونند که حاوی تاریخ تبدیل شده است

    See Also:
    HijriAdjustment
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله titbasoft : سه شنبه 08 خرداد 1386 در 16:44 عصر
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  6. #6
    کاربر دائمی آواتار tabib_m
    تاریخ عضویت
    تیر 1384
    محل زندگی
    ایران - قم
    پست
    1,268
    سلام.
    استاد یک کد معروف بین برنامه نویسهای php هست و استفاده میشه که توسط آقای میلاد راستیان نوشته شده که فکر نمیکنم توی این سایت عضو باشن. ایشون توی سایت مجیدآنلاین فعالیت دارن. ولی در کل کدشون در حدی کامل هست که من دلم نیومد اینجا مطرح نکنم.
    اگر اجازه هست من حداقل لینک صفحه ای که در موردش توضیح دادن رو اینجا بذارم.
    اگر هم نه ، خوب میتونید مطلب من رو پاک کنید.
    با تشکر

    موفق باشید.

  7. #7
    لطفا SQL رو هم اضافه کنید
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  8. #8
    مطالب زیر از تاپیک های همین انجمن استخراج شده اند:

    جاوا: PERSIANCALENDAR
    سی شارپ: Jalali Calendar یک تاپیک سایت
    زبان TSQL: تابع تبدیل تاریخی شمسی و میلادی
    دات نت: ابزارهای تبدیل تاریخ برای دات نت
    فاکس: کد یا Component
    دلفی: ShDate Solutions یک تاپیک سایت
    وی بی دات نت: تاپیک سایت
    ای اس پی دات نت (ASP.Net) : یک تاپیک سایت
    دات نت 2: یک تاپیک از سایت یک تاپیک از سایت (II)
    گروهی: PHP, ANSI C, JAVA Scrip, C#‎, TeX



    مجددا TSQL:
    CREATE function DLE(@EDate nvarchar(10)) --( @FDate Char(10) output)
    returns char(10)
    AS
    begin
    --Declare @EDate DateTime

    Declare @EYear int, @EMon smallint, @EDay smallint, @ELeap bit,
    @EMonArray Char(12), @EDayOfYear int
    Declare @FYear int, @FMon smallint, @FDay smallint, @FLeap bit,
    @FMonArray Char(12)
    Select @FMonArray= Char(31)+Char(31)+Char(31)+Char(31)+Char(31)+Char(
    31)+Char(30)+Char(30)+Char(30)+Char(30)+Char(30)+C har(29)
    Select @EMonArray= Char(31)+Char(28)+Char(31)+Char(30)+Char(31)+Char(
    30)+Char(31)+Char(31)+Char(30)+Char(31)+Char(30)+C har(31)
    --set @EDate = Getdate()
    Select @EYear= Year(@EDate)
    Select @EMon= Month(@EDate)
    Select @EDay= Day(@EDate)
    if (@EYear %4)=0 Select @ELeap=1 else Select @ELeap=0
    --------------------- Calc Day Of Year
    Declare @Temp int, @Cnt int
    Select @Cnt=@EMon-1
    Select @Temp=0
    While @Cnt<>0 begin
    if (@Cnt=2)and(@ELeap=1) Select @Temp= @Temp+29
    else Select @Temp= @Temp + Ascii(Substring(@EMonArray, @Cnt, 1))
    Select @Cnt=@Cnt-1
    end
    Select @EDayOfYear= @Temp+@EDay
    ---------------------- Convert to Farsi
    Select @Temp= @EDayOfYear-79
    if @Temp>0 Select @FYear= @EYear-621
    else begin
    Select @FYear= @EYear-622
    if ((@FYear %4)=3) Select @Temp= @Temp+366 else Select @Temp= @Temp+365
    end
    if (@FYear %4)=3 Select @FLeap=1 else Select @Fleap=0
    Select @Cnt= 1
    While (@Temp<>0) and (@Temp>Ascii(Substring(@FMonArray, @Cnt, 1)))
    begin
    if @Cnt=12
    if (@FLeap=1) Select @Temp=@Temp-30 else Select @Temp= @Temp-29
    else Select @Temp= @Temp-Ascii(Substring(@FMonArray, @Cnt, 1))
    Select @Cnt= @Cnt+1
    end
    if @Temp<>0 begin
    Select @FMon= @Cnt
    Select @FDay= @Temp
    end else begin
    Select @FMon= 12
    Select @FDay=30
    end
    ------------------ Create Output
    Declare @YStr Char(4), @MStr char(2), @DStr Char(2)
    select @YStr= Convert(Char, @FYear)
    if @FMon<10 Select @MStr='0'+Convert(Char,@FMon) else Select
    @MStr=Convert(Char, @FMon)
    if @FDay<10 Select @DStr='0'+Convert(Char,@FDay) else Select
    @DStr=Convert(Char, @FDay)
    --Select @FDate= @YStr+'/'+@MStr+'/'+@dStr
    return @YStr+'/'+@MStr+'/'+@dStr
    end


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

    CREATE function DLF(@EDate DateTime) --( @FDate Char(10) output)
    returns char(10)
    AS
    begin
    --Declare @EDate DateTime
    if @edate=''
    return ''
    else
    Declare @EYear int, @EMon smallint, @EDay smallint, @ELeap bit,
    @EMonArray Char(12), @EDayOfYear int
    Declare @FYear int, @FMon smallint, @FDay smallint, @FLeap bit,
    @FMonArray Char(12),@TempReturn char(10)
    Select @FMonArray= Char(31)+Char(31)+Char(31)+Char(31)+Char(31)+Char(
    31)+Char(30)+Char(30)+Char(30)+Char(30)+Char(30)+C har(29)
    Select @EMonArray= Char(31)+Char(28)+Char(31)+Char(30)+Char(31)+Char(
    30)+Char(31)+Char(31)+Char(30)+Char(31)+Char(30)+C har(31)
    --set @EDate = Getdate()
    SET @TempReturn =''
    if cast(@edate as char(10))='' or cast(@edate as char(10))=null
    return @tempreturn
    else
    Select @EYear= Year(@EDate)
    Select @EMon= Month(@EDate)
    Select @EDay= Day(@EDate)
    if (@EYear %4)=0 Select @ELeap=1 else Select @ELeap=0
    --------------------- Calc Day Of Year
    Declare @Temp int, @Cnt int
    Select @Cnt=@EMon-1
    Select @Temp=0
    While @Cnt<>0 begin
    if (@Cnt=2)and(@ELeap=1) Select @Temp= @Temp+29
    else Select @Temp= @Temp + Ascii(Substring(@EMonArray, @Cnt, 1))
    Select @Cnt=@Cnt-1
    end
    Select @EDayOfYear= @Temp+@EDay
    ---------------------- Convert to Farsi
    Select @Temp= @EDayOfYear-79
    if @Temp>0 Select @FYear= @EYear-621
    else begin
    Select @FYear= @EYear-622
    if ((@FYear %4)=3) Select @Temp= @Temp+366 else Select @Temp= @Temp+365
    end
    if (@FYear %4)=3 Select @FLeap=1 else Select @Fleap=0
    Select @Cnt= 1
    While (@Temp<>0) and (@Temp>Ascii(Substring(@FMonArray, @Cnt, 1)))
    begin
    if @Cnt=12
    if (@FLeap=1) Select @Temp=@Temp-30 else Select @Temp= @Temp-29
    else Select @Temp= @Temp-Ascii(Substring(@FMonArray, @Cnt, 1))
    Select @Cnt= @Cnt+1
    end
    if @Temp<>0 begin
    Select @FMon= @Cnt
    Select @FDay= @Temp
    end else begin
    Select @FMon= 12
    Select @FDay=30
    end
    ------------------ Create Output
    Declare @YStr Char(4), @MStr char(2), @DStr Char(2)
    select @YStr= Convert(Char, @FYear)
    if @FMon<10 Select @MStr='0'+Convert(Char,@FMon) else Select
    @MStr=Convert(Char, @FMon)
    if @FDay<10 Select @DStr='0'+Convert(Char,@FDay) else Select
    @DStr=Convert(Char, @FDay)
    --Select @FDate= @YStr+'/'+@MStr+'/'+@dStr
    return @YStr+'/'+@MStr+'/'+@dStr
    end






    ASP کلاسیک:
    <%
    FMonArray= array (0,31,31,31,31,31,31,30,30,30,30,30,30)
    EMonArray= Array(0,31, 28,31,30,31,30,31,31,30,31,30,31)

    W = Array ("یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهار‌شنبه", "پنج‌شنبه", "جمعه", "شنبه")
    Mon = Array ("فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند")
    EYear= Year(Date)
    EMon= Month(Date)
    EDay = Day(Date)

    ELeap=0

    if ((EYear mod 4))= 0 Then
    ELeap =1
    End if

    Cnt=EMon-1
    Temp=0
    While Cnt<>0
    if ((Cnt=2)and(ELeap=1)) Then
    Temp= Temp+29
    else
    Temp= Temp + EMonArray(Cnt)
    end if
    Cnt=Cnt-1
    Wend

    EDayOfYear= Temp+EDay
    ' Convert to Farsi

    Temp= EDayOfYear-79
    if Temp>0 Then
    FYear= EYear-621
    else
    FYear= EYear-622

    if ((FYear mod 4)=3) then
    Temp= Temp+366
    else
    Temp= Temp+365
    End if
    End if

    if (FYear mod 4)=3 Then
    FLeap=1
    else
    Fleap=0
    End if

    Cnt= 1

    While( (Temp<>0) and (Temp>FMonArray(Cnt)) )
    if Cnt=12 Then
    if (FLeap=1) Then
    Temp=Temp-30
    else Temp= Temp-29
    end if
    else Temp= Temp-FMonArray(Cnt)
    end if

    Cnt= Cnt+1
    Wend

    if Temp<>0 Then
    FMon = Cnt
    FDay= Temp
    else
    FMon= 12
    FDay=30
    End if

    DateShamsi = W(WeekDay(Date) - 1) & " " & FDay& " " & Mon(FMon - 1) & " " &FYear
    %>
    <%
    response.write(DateShamsi)
    %>
    آخرین ویرایش به وسیله titbasoft : چهارشنبه 09 خرداد 1386 در 11:51 صبح
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  9. #9
    . آواتار oxygenws
    تاریخ عضویت
    دی 1382
    محل زندگی
    تهران/مشهد
    پست
    6,333
    سلام.
    استاد یک کد معروف بین برنامه نویسهای php هست و استفاده میشه که توسط آقای میلاد راستیان نوشته شده که فکر نمیکنم توی این سایت عضو باشن. ایشون توی سایت مجیدآنلاین فعالیت دارن. ولی در کل کدشون در حدی کامل هست که من دلم نیومد اینجا مطرح نکنم.
    اگر اجازه هست من حداقل لینک صفحه ای که در موردش توضیح دادن رو اینجا بذارم.
    اگر هم نه ، خوب میتونید مطلب من رو پاک کنید.
    با تشکر

    موفق باشید.
    میلاد اینجا هم عضو هست...
    البته کد ایشون مقداری باگ داره و اصلا پرفورمنس خوبی نداره. (ضمن اینکه کد farsiweb.info هم پرفورمنسش خوب نیست!)
    ایمیل من
    سایت من

    عضویت در جامعه‌ی اهدای عضو

    Direct PGP key: http://tinyurl.com/66q5cy
    PGP key server: keyserver.ubuntu.com
    PGP name to search: omidmottaghi

  10. #10
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018
    من از این کد در دلفی استفاده می کنم


    function shamsi(const a: string): string;
    var
    y, m, d: integer;
    ys, ms, ds: string;
    begin
    { m := strtoint((copy(a,0,2)));//05/09/07 2007/05/09
    d := strtoint((copy(a,4,2)));
    y := strtoint((copy(a,7,2)));y := 2000 + y;}

    m := strtoint((copy(a, 6, 2))); //05/09/07 2007/05/09
    d := strtoint((copy(a, 9, 2)));
    y := strtoint((copy(a, 3, 2))); y := 2000 + y;
    if ((M < 3) or ((M = 3) and (D < 21))) then
    Y := Y - 622
    else
    Y := Y - 621;

    case M of
    1:
    if (D < 21) then begin
    M := 10; D := D + 10;
    end
    else begin
    M := 11; D := D - 20;
    end;
    2:
    if (D < 20) then begin
    M := 11; D := D + 11;
    end
    else begin
    M := 12; D := D - 19;
    end;
    3:
    if (D < 21) then begin
    M := 12; D := D + 9;
    end
    else begin
    M := 1; D := D - 20;
    end;
    4:
    if (D < 21) then begin
    M := 1; D := D + 11;
    end
    else begin
    M := 2; D := D - 20;
    end;
    5, 6:
    if (D < 22) then begin
    M := M - 3; D := D + 10;
    end
    else begin
    M := M - 2; D := D - 21;
    end;
    7, 8, 9:
    if (D < 23) then begin
    M := M - 3; D := D + 9;
    end
    else begin
    M := M - 2; D := D - 22;
    end;
    10:
    if (D < 23) then begin
    M := 7; D := D + 8;
    end
    else begin
    M := 8; D := D - 22;
    end;
    11, 12:
    if (D < 22) then begin
    M := M - 3; D := D + 9;
    end
    else begin
    M := M - 2; D := D - 21;
    end;
    end;

    if d < 10 then ds := '0' + inttostr(d)
    else
    ds := inttostr(d);
    if m < 10 then ms := '0' + inttostr(m)
    else
    ms := inttostr(m);
    ys := inttostr(y); ys := copy(ys, 3, 2);

    result := ys + '/' + ms + '/' + ds;
    end;


    روش استفاده


    procedure TFormInfoAlum.FormShow(Sender: TObject);
    begin
    MaskEdit1.Text := shamsi(DateToStr(Date));
    end;


  11. #11
    کامپوننت برای دلفی

    این بسته شامل : سورس کد، برنامه‌ی نمایشی و فایل توضیحات هست.

    این هم تصویر یکی از کامپوننت‌ها در زمان اجرا :


    فایل های ضمیمه فایل های ضمیمه

  12. #12
    کاربر جدید
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    اصفهان
    سن
    37
    پست
    2
    تبدیل تاریخ در سی شارپ چگونه است؟

  13. #13
    لطفا با استفاده از کدهای مختلفی که در همین سایت یا سایتهای دیگر وجود دارد یا کدهائی که خودتان نوشته اید مطابق اولین نوشته این تاپیک ، نیازمندی ها را تکمیل کنید . هنوز برای خیلی از محیطها کد کاملی ارائه نشده
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  14. #14
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011
    نقل قول نوشته شده توسط m-khorsandi مشاهده تاپیک
    کامپوننت برای دلفی

    این بسته شامل : سورس کد، برنامه‌ی نمایشی و فایل توضیحات هست.

    این هم تصویر یکی از کامپوننت‌ها در زمان اجرا :


    قبلا از سورس کد این تقویم استفاده کردم. این تقویم با یک تقویم خورشیدی غیر رایگان که از یک سایتی دموی اونو گرفتم در حدود سال 1410 یک روز اختلاف داشت. آیا این مشکل رفع شده یا مشکل از اون تقویم ه بوده؟

  15. #15
    نمی‌دونم دقیقاً کدوم بخش از کد رو میگی و با کدوم کامپوننت مقایسه کردی!
    در ضمن این بار اولی هست که من سورس این بسته رو منتشر کردم.

  16. #16
    این کد رو نگاه کنید.

  17. #17
    Delphi:
    مبدل تاریخ میلادی به شمسی و برعکس دارای Demo

    کلاس TFaDate مجموعه ای از توابع آماده برای راحتی کار برنامه نویسان داره

    راهنما و دانلود در آدرس زیر:

    تبدیل تاریخ میلادی به شمسی و برعکس برای دلفی
    آخرین ویرایش به وسیله SalarSoft : یک شنبه 13 مرداد 1387 در 18:53 عصر دلیل: به روز رسانی لینک

  18. #18
    کاربر دائمی
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    تهران
    پست
    271
    نقل قول نوشته شده توسط dkhatibi مشاهده تاپیک
    قبلا از سورس کد این تقویم استفاده کردم. این تقویم با یک تقویم خورشیدی غیر رایگان که از یک سایتی دموی اونو گرفتم در حدود سال 1410 یک روز اختلاف داشت. آیا این مشکل رفع شده یا مشکل از اون تقویم ه بوده؟

    اینجا توضیح کاملی درباره‌ی صحت تقویم جلالی داده (برای رعایت امانت چیزی ازش حذف نکردم):

    صحت تقویم شمسی
    از فارسی‌وب


    قانون ایران به‌وضوح بیان می‌کند که در محاسبهٔ تقویم باید از سال خورشیدی حقیقی استفاده کرد، که این کار نیازمند محاسبات نجومی برای تعیین نقطهٔ اعتدال فروردین و ظهر شرعی است. مشکل اینجاست که قانون محاسبهٔ تقویم که در سال ۱۳۰۴ شمسی (۱۹۲۵میلادی) تصویب شده، مبهم است. مهمترین مشکل این است که قانون، محل مشاهدهٔ ظهر شرعی را، که برای تعیین روز اول سال ایرانی استفاده می‌شود، مشخص نمی‌کند.

    این مسئله باعث شده که تعدادی از ستاره‌شناسان (از جمله رینگولد و دِرشویتز) نصف‌النهاری از تهران، و بقیه (از جمله ایرج‌ ملک‌پور) نصف‌النهار ۵۲٫۵ شرقی را (نصف‌النهاری که ساعت استاندارد ایران را تعیین می‌کند) به عنوان محل تشخیص اولین روز سال در نظر بگیرند. به همین دلیل هیچ‌کس واقعاً نمی‌داند که آیا سال ۱۴۶۹ شمسی کبیسه خواهدبود یا نه. درنتیجه، جز در شرایطی که قانون اصلاح شده و نصف‌النهاری مشخص شود، هر الگوریتمی که مدعی باشد که برای سال ۱۴۶۹ یا سال‌های بعد از آن کاربرد دارد، مکانی را به عنوان محل مشاهده فرض می‌کند که نباید فرض کند.

    همچنین، قبل از سال ۱۳۰۴ شمسی، طول ماه‌های ایرانی با طول فعلی آنها متفاوت بود. برای مثال، همهٔ سال‌ها حداقل یک ماه ۳۲ روزه داشتند. به همین دلیل، همهٔ الگوریتم‌هایی که طول فعلی ماه‌ها را پیش فرض قرارمی‌دهند نتایج غلطی برای سال ۱۳۰۳ شمسی و سال‌های قبل از آن به‌دست می‌دهند. مشکلات ذکر شده در بالا عملاً هر الگوریتمی (که بدون جدول داده‌ها برای تعداد روزها در ماه‌های سال ۱۳۰۴ و قبل از آن، کارمی‌کند) را محدود به دورهٔ زمانی سال‌های ۱۴۶۸-۱۳۰۴ شمسی می‌کند. در تقویم لینوکس شریف ۲ یکی از پراستفاده‌ترین الگوریتم‌های محاسباتی ۳۳ ساله به کار برده ‌شده‌است. این الگوریتم در سراسر دورهٔ ۱۴۶۸-۱۳۰۴ با تقویم رسمی (نجومی) شمسی مطابقت دارد. همچنین این همان الگوریتمی است که در دو نرم‌افزار بین‌المللی، دات نت مایکروسافت و مونوی ناوِل به کار رفته است.

    لازم به ذکر است که تقویم ایرانی با الگوریتم محاسباتی ۲۸۲۰ ساله، که بوسیلهٔ احمد بیرَشک و سایرین پیشنهاد داده‌ شده، نسبت به تقویم ۳۳ ساله دقت کمتری دارد: اول این که زودتر از دورهٔ ۳۳ ساله در مطابقت با تقویم نجومی رسمی شکست می‌خورد (اولین شکست در سال ۲۰۲۵ میلادی است)، و دوم این که قاعدهٔ پیشنهاد شده در الگوریتم۲۸۲۰ ساله براساس سال میانگین استوایی پی‌ریزی شده، نه سال میانگین اعتدال فروردین.

    فارسی‌وب درحال کار برای گسترش کُد تقویم استاندارد شمسی خود به سال‌های قبل از ۱۳۰۴ شمسی است، و اطلاعاتی درمورد تقویم ایرانی واقعی مورد استفاده در سال‌های ۱۳۰۳-۱۲۳۰ شمسی در ایران جمع‌آوری کرده است. ما از هرگونه اطلاعاتی در زمینهٔ تقویم ایرانی مورد استفاده قبل از این دوره استقبال می‌کنیم.

  19. #19
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011
    شاید مشکل از این باشد...
    اما من به این دلیل چرت گفتم. دانلود
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.JPG‏ (13.1 کیلوبایت, 712 دیدار)
    • نوع فایل: jpg 2.JPG‏ (5.7 کیلوبایت, 693 دیدار)

  20. #20
    قبلا در یک تایپکی این رو معرفی کردم بهترین و جالب ترین تقویم شمسی
    نقل قول نوشته شده توسط reza1357 مشاهده تاپیک
    سلام دوستان ، نمیدونم این تقویم توی سایت معرفی شده یا نه بهرحال هروقت چند بار تاپیکی با همین نام ایجاد میشه گفتم بزارم تا دوستان استفاده کنند.

    ضمیمه 8722

    ما رو از دعای خیر بی نصیب نکنید.

    موفق و پیروز باشید

  21. #21
    این مبحث به بخش Open Source منتقل شد .
    و هنوز برای بسیاری از موارد لیست شده در اولین مطلب راه حلی ارائه نشده . افرادی که فرصت یا تمایل دارن لطفا کدهائی که برای هر زبان یا محیط ارائه شده رو بصورت کامل همراه با یک نمونه کد و ترجیحا" یک عکس در قالب یک فایل Zip یه جائی بگذارن و لینک بدن یا ضمیمه کنن .

    P.S : خیلی خوب میشه اگر یک نفر تمام کدهائی که به دات نت مربوط است را همراه با مثال در یک فایل جمع کنه و ضمیمه کنه .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  22. #22
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    من کد pls/sql اوراکل رو دارم . در لیست نبود ، آیا میتونه مفید باشه؟

  23. #23
    کاربر دائمی آواتار pooyanm
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    Esfahan - Iran
    پست
    567
    نقل قول نوشته شده توسط hmm مشاهده تاپیک
    من کد pls/sql اوراکل رو دارم . در لیست نبود ، آیا میتونه مفید باشه؟
    شما بذار مفید نباشه مضر نیست.

  24. #24
    کاربر جدید
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    24
    نوشته شده توسط reza1357
    سلام دوستان ، نمیدونم این تقویم توی سایت معرفی شده یا نه بهرحال هروقت چند بار تاپیکی با همین نام ایجاد میشه گفتم بزارم تا دوستان استفاده کنند.

    ضمیمه 8722
    سلام
    ببخشید ممکنه بگید که چه جوری پروژه تون رو نوشتید؟ من هر چی توش می گردم حتی یه خط کد هم پیدا نمی کنم، البته می دونم کگه از dll ها استفاده کردید ول اگه می شه بگید که چه طوری اینکار رو کردید؟

  25. #25
    سلام
    یک ماژول رو برای همین کار تو پایتون نوشتم که امدوارم مفید واقع بشه . در چند روژه آینده تغییراتی اساسی روش می دم و کامل ترش می کنم .

    http://osp.ir/projects/pycalverter

    from Calverter import Calverter
    cal = Calverter()
    jd = cal.gregorian_to_jd(2007,07,01)
    wday = cal.jwday(jd)
    print "Jalali: "
    print cal.JALALI_WEEKDAYS[wday],
    print cal.jd_to_jalali(jd)
    print "\nIslamic: "
    print cal.ISLAMIC_WEEKDAYS[wday],
    print cal.jd_to_islamic(jd)

    if cal.leap_islamic(1428) :
    print 'Leap Isalmic year !'


    خروجی :


    Jalali: 
    Yekshanbeh (1386, 4, 10)

    Islamic:
    al-ahad (1428, 6, 15)
    Leap Isalmic year !

  26. #26
    . آواتار oxygenws
    تاریخ عضویت
    دی 1382
    محل زندگی
    تهران/مشهد
    پست
    6,333
    کد PHP:
    http://svn.berlios.de/svnroot/repos/...endars.inc.php

    البته کد مربوط به قسمت maketime به اندازهء maketime خود PHP قابلیت مانور نداره، اما برای تاریخ های مثبت(!) کاملا درست عمل می کنه
    ایمیل من
    سایت من

    عضویت در جامعه‌ی اهدای عضو

    Direct PGP key: http://tinyurl.com/66q5cy
    PGP key server: keyserver.ubuntu.com
    PGP name to search: omidmottaghi

  27. #27
    کاربر دائمی آواتار cybercoder
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    root/
    پست
    2,016
    جاوا اسکریپتشو ندیدم تو پست های دوستان شایدم خوب نگا نکردم ولی کار از محکم کاری عیب نمی کنه. یه date picker با استفاده از js
    http://www.codeproject.com/useritems...ate_Picker.asp

    موید و پیروز باشید

  28. #28
    Public Sub MeToday(ByRef ShDay As Integer, ByRef ShMonth As Integer, ByRef ShYear As Integer, ByRef ShWeekDay As String)
    'This procedure change NowDate to Shamsi date and save it in ShDay , ShMonth, ShYear variables.
    'Also it return the Persian Weekday in ShWeekDay variable and can use in all parts of project

    Dim aryweekday(7) As String
    aryweekday(1) = "í˜ÔäÈå"
    aryweekday(2) = "ÏæÔäÈå"
    aryweekday(3) = "Óå ÔäÈå"
    aryweekday(4) = "åÇÑÔäÈå"
    aryweekday(5) = "äÌÔäÈå"
    aryweekday(6) = "ÌãÚå"
    aryweekday(7) = "ÔäÈå"
    Dim year1, month1, day1, temp As String
    Dim IntDay As Integer
    Dim IntMonth As Integer
    Dim IntYear As Integer
    Dim intShamsDay As Integer
    Dim intShamsMonth As Integer
    Dim intShamsYear As Integer
    Dim intTemp As Integer
    Dim intRemain As Integer

    IntDay = Day(Date)
    IntMonth = Month(Date)
    IntYear = Year(Date)

    Select Case IntMonth
    Case Is = 1:
    intShamsYear = IntYear - 622
    If IntDay <= 20 Then
    intShamsMonth = 10
    intShamsDay = IntDay + 10
    Else
    intShamsMonth = 11
    intShamsDay = IntDay - 20
    End If

    Case Is = 2:
    intShamsYear = IntYear - 622
    If IntDay <= 19 Then
    intShamsMonth = 11
    intShamsDay = IntDay + 11
    Else
    intShamsMonth = 12
    intShamsDay = IntDay - 19
    End If

    Case Is = 3:
    If IntDay <= 20 Then
    intShamsMonth = 12
    intShamsDay = IntDay + 9
    intShamsYear = IntYear - 622
    Else
    intShamsMonth = 1
    intShamsDay = IntDay - 20
    intShamsYear = IntYear - 621
    End If

    Case Is = 4:
    intShamsYear = IntYear - 621
    If IntDay <= 20 Then
    intShamsMonth = 1
    intShamsDay = IntDay + 11
    Else
    intShamsMonth = 2
    intShamsDay = IntDay - 20
    End If

    Case Is = 5:
    intShamsYear = IntYear - 621
    If IntDay <= 21 Then
    intShamsMonth = 2
    intShamsDay = IntDay + 10
    Else
    intShamsMonth = 3
    intShamsDay = IntDay - 21
    End If

    Case Is = 6:
    intShamsYear = IntYear - 621
    If IntDay <= 21 Then
    intShamsMonth = 3
    intShamsDay = IntDay + 10
    Else
    intShamsMonth = 4
    intShamsDay = IntDay - 21
    End If

    Case Is = 7:
    intShamsYear = IntYear - 621
    If IntDay <= 22 Then
    intShamsMonth = 4
    intShamsDay = IntDay + 9
    Else
    intShamsMonth = 5
    intShamsDay = IntDay - 22
    End If

    Case Is = 8:
    intShamsYear = IntYear - 621
    If IntDay <= 22 Then
    intShamsMonth = 5
    intShamsDay = IntDay + 9
    Else
    intShamsMonth = 6
    intShamsDay = IntDay - 22
    End If


    Case Is = 9:
    intShamsYear = IntYear - 621
    If IntDay <= 22 Then
    intShamsMonth = 6
    intShamsDay = IntDay + 9
    Else
    intShamsMonth = 7
    intShamsDay = IntDay - 22
    End If

    Case Is = 10:
    intShamsYear = IntYear - 621
    If IntDay <= 22 Then
    intShamsMonth = 7
    intShamsDay = IntDay + 8
    Else
    intShamsMonth = 8
    intShamsDay = IntDay - 22
    End If

    Case Is = 11:
    intShamsYear = IntYear - 621
    If IntDay <= 21 Then
    intShamsMonth = 8
    intShamsDay = IntDay + 9
    Else
    intShamsMonth = 9
    intShamsDay = IntDay - 21
    End If

    Case Is = 12:
    intShamsYear = IntYear - 621
    If IntDay <= 21 Then
    intShamsMonth = 9
    intShamsDay = IntDay + 9
    Else
    intShamsMonth = 10
    intShamsDay = IntDay - 21
    End If
    End Select
    year1 = Trim(Str(intShamsYear))
    month1 = Trim(Str(intShamsMonth))
    day1 = Trim((intShamsDay))
    ShYear = year1
    ShMonth = month1
    ShDay = day1
    ShWeekDay = aryweekday(DatePart("w", Date))
    End Sub
    Public Function CheckDate(ByVal InDay As Long, ByVal InMonth As Long, ByVal InYear As Long) As Boolean
    CheckDate = True
    If Not (InYear >= 1300 And InYear <= 9999) Then
    CheckDate = False
    Exit Function
    End If
    If Not (InDay >= 1 And InDay <= 31) Then
    CheckDate = False
    Exit Function
    End If
    If InMonth >= 1 And InMonth <= 12 Then
    If InMonth >= 1 And InMonth <= 6 And InDay > 31 Then
    CheckDate = False
    Exit Function
    End If

    If InMonth >= 7 And InMonth <= 12 And InDay > 30 Then
    CheckDate = False
    Exit Function
    End If
    Else
    CheckDate = False
    Exit Function
    End If
    End Function

  29. #29

  30. #30
    کاربر دائمی آواتار hector2000
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    پرشین ساینس
    پست
    227
    با سلام
    دوستان کد تبدیل تاریخ شمسی به میلادی را هم دارید؟
    با تشکر

  31. #31
    کاربر دائمی آواتار hector2000
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    پرشین ساینس
    پست
    227
    با سلام
    دوستان شاید خندتون بگیره ولی می خواهم بگم که جواب سوالم را فهمیدم و می خواهم در اینجا هم برای دوستان علاقه مند قرار بدم تا بدبختی هایی که من و دوستم کشیدیم را نکشند.
    به پییوست یکی از کاملترین مبدل های تقویم شمسی به میلادی و بلعکس را تقدیم میکنم.
    این تقویم از الگوی تاریخ جلالی پیروی می کند بدین معنی که تاریخ رسمی کشورمان نیز از همین الگو استفاده می کند.
    این برنامه را به کمک یکی از دوستام به پایان رساندیم و با استفاده از خود تقویم فارسی مجموعه دات نت بارها ازمایشش کردیم.مطمئن باشید که اشتباه نمی کند.
    این فایل را بصورت ASP برای دوستان قرار می دهم که براحتی می توانند ان را به کدهای وی بی و ی بی دات نت تبدیل کنند.
    طریقه استفاده:
    اگر در ASP می خواهید استفاده کنید:
    اول فایل را به برنامتون INCLUDE کنید و بعد برای تبدیل تاریخ میلادی به شمسی از نمونه های زیر استفاده کنید.
    میلادی به شمسی:
    برای نمایش کامل تاریخ کنونی (همراه روز هفته ،نام ماه،سال،روز):("IRAN(DATE(),"ALL
    برای نمایش کامل تاریخ خاص:فقط بجای() DATE تاریخ خودتون را بگذارید
    برای نمایش بخشی از تاریخ:("IRAN(DATE(),"WEEK برای نمایش هفته
    ("IRAN(DATE(),"MONTH ماه،("IRAN(DATE(),"DAY روز،("IRAN(DATE(),"YEAR سال
    تمامی مقادیر را می توان برای تاریخ خاص هم انجام داد

    شمسی به میلادی:
    (TOMILAD(YEAR,MOUNTH,DAY که بجای YEAR تاریختون وبجای MOUNTH ماهتون وبجای DAY روزتون را قرار بدید و ان را تحویل بگیرید.
    هر دو تابع از نوع FUNCTION هستند(یعنی مستقیم چاپشون کنید)
    موفق باشید.
    با تشکر از دوست ارجمندم حسن اقا.
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip cal.zip‏ (1.0 کیلوبایت, 288 دیدار)

  32. #32
    اگه هم پرل سراغ دارید لطفا لینک بدید.

  33. #33
    کاربر دائمی آواتار hossein taghi zadeh
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    Mofateh dormitory @ Shiraz University
    سن
    38
    پست
    109
    با سلام

    کامپوننت برای دلفی

    این بسته شامل : سورس کد، برنامه‌ی نمایشی و فایل توضیحات هست.

    این هم تصویر یکی از کامپوننت‌ها در زمان اجرا :

    http://img.majidonline.com/pic/91763/Image_01.jpg
    یه سری پروپرتی به کامپوننت آقای خورسندی اضافه شده از جمله EditMask.
    در ضمن مشکل سال کبیسه هم حل شد.
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله hossein taghi zadeh : چهارشنبه 28 شهریور 1386 در 15:44 عصر دلیل: به روز رسانی و حل چند مشکل

  34. #34
    کاربر دائمی آواتار hossein taghi zadeh
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    Mofateh dormitory @ Shiraz University
    سن
    38
    پست
    109
    با سلام

    این هم تبدیل تاریخ میلادی و شمسی در PHP. (تبدیل شده‌ی SolarUtl دلفی به پی.اچ.پی)
    فایل های ضمیمه فایل های ضمیمه

  35. #35
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321

    SolarUtl دلفی

    با سلام.

    من یه تعداد فانکشن و پروسیجر به SolarUtl آقای کامبیز خجسته اضافه کردم.
    کاملش رو میذارم اینجا. توضیحاتی که آقای خجسته در ابتدای این فایل دادن رو به رسم امانت پاک نکردم.
    فقط تنها کاری که کردم اینه که به ابتدای اعلان هر فانکشن و پروسیجر یه خط کامنت فارسی گذاشتم که مشخص بشه کارش چیه.

    فکر کنم اکثر توابع مورد نیاز تو برنامه نویسی رو داشته باشه.
    دلیل اینکه مثال آماده نکردم اینه که این یونیت فقط عملیات محاسباتی انجام میده و اینترفیس نداره. البته یه چیز تو مایه های کامپوننت آقای خورسندی توسط خود آقای خجسته آماده شده بود که به اندازه این کامپوننت کارایی نداشت.
    اگه آقای خورسندی توابع این یونیت رو به کامپوننتشون اضافه کنن یا به صورت یه کامپوننت غیرویژوال به پکشون اضافه کنند فکر کنم برای دلفی کارها مرجع خوبی بشه. من لیست همه توابع و پروسیجرها رو اینجا میارم.
    //آیا سال کبیسه است یا نه
    function IsLeapYear(DateKind: TDateKind; Year: Word): Boolean;
    //روزهای ماه
    function DaysOfMonth(DateKind: TDateKind; Year, Month: Word): Word;
    //آیا تاریخ صحیح است
    function IsDateValid(DateKind: TDateKind; Year, Month, Day: Word): Boolean;
    //تبدیل رشته به تاریخ
    function StrToDateEx(DateKind: TDateKind; sDate : string;var Year, Month, Day: Word): Boolean;
    //تبدیل تاریخ به رشته
    function DateToStrEx(DateKind: TDateKind; Year, Month, Day: Word): string;
    //تبدیل سال میلادی به شمسی با نتیجه رشته ای
    function GregorianToSolarStr(Date: TDateTime): string;
    //معتبر کردن تاریخ
    procedure ValidateDate(DateKind: TDateKind;var Year, Month, Day: Word);
    //تعداد روزهای گذشته سال
    function DaysToDate(DateKind: TDateKind; Year, Month, Day: Word): Word;
    //تعداد روزهای باقیمانده سال
    function DaysToEndOfYear(DateKind: TDateKind; Year, Month, Day: Word): Word;
    //تعداد روزها و سال را گرفته و ماه و روز مربوطه را می دهد
    function DateOfDay(DateKind: TDateKind; Days, Year: Word; var Month, Day: Word): Boolean;
    //شماره روز هفته
    function DayOfWeekEx(DateKind: TDateKind; Year: Word; Month, Day: Word): Word;
    //افزودن به تاریخ
    Procedure IncDate(DateKind: TDateKind;var Year, Month, Day: Word; AYears, AMonths, ADays: Smallint);overload;
    function IncDate(DateKind: TDateKind; sDate: string; AYears, AMonths, ADays: Smallint):string;overload;
    //تبدیل تاریخ میلادی به شمسی بصورت مجزا
    function GregorianToSolar(var Year, Month, Day: Word): Boolean;
    //تبدیل تاریخ شمسی به میلادی
    function SolarToGregorian(var Year, Month, Day: Word): Boolean;
    //تبدیل تاریخ میلادی به شمسی
    function SolarEncodeDate(Year, Month, Day: Word): TDateTime;
    //تبدیل تاریخ میلادی به شمسی
    procedure SolarDecodeDate(Date: TDateTime; var Year, Month, Day: Word);
    //تبدیل تاریخ میلادی به شمسی
    procedure SolarDecodeDateStr(Date: TDateTime; var Year, Month, Day: String);
    //مقدار عددی تاریخ شمسی
    function SolarDateToInt(Year, Month, Day: Word): Integer;overload;
    //مقدار عددی تاریخ شمسی
    function SolarDateToInt(SolarStrDate: String): Integer;overload;
    //برگرداندن عدد به تاریخ شمسی
    function IntToSolarDate(SolarIntDate: Integer): String;
    //تعداد روزهای بین دو تاریخ شمسی
    function SolarDaysBetween(const SolarNow, SolarThen: String): Integer;
    //برگرداندن المانهای تاریخ شمسی بصورت صحیح
    function SolarDateElemans(SolarDate: String; var Year, Month, Day: Word): Boolean;
    //آیا تاریخ شمسی صحیح است؟
    function IsValidSolarDate(SolarDate: String): Boolean;
    //آیا رشته داده شده فقط شامل عدد است؟
    function IsIntNumber (S:String):Boolean;
    فایل های ضمیمه فایل های ضمیمه

  36. #36
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234
    چرا ظاهر تقویم های فارسی هیچ وقت به زیبایی تقویم های انگلیسی نمیشه؟

  37. #37
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321
    نقل قول نوشته شده توسط golihaghighi مشاهده تاپیک
    چرا ظاهر تقویم های فارسی هیچ وقت به زیبایی تقویم های انگلیسی نمیشه؟
    چون ما ایرانی ها معمولاً به اینترفیس برنامه که یکی از مهمترین فاکتورهای برنامه نویسیه اهمیت نمیدیم.
    شاید از لحاظ ساختاری خیلی خوب کار کرده باشیم. ولی به ظواهر نمی رسیم.

  38. #38
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234
    شاید هم مشکل اصلی حروف بهم پیوسته در فارسی باشه که نمیتوان اونو به زیبایی خط انگلیسی نمایش داد.

  39. #39
    نقل قول نوشته شده توسط golihaghighi مشاهده تاپیک
    چرا ظاهر تقویم های فارسی هیچ وقت به زیبایی تقویم های انگلیسی نمیشه؟
    باعث تعجبه
    چطور میتونید همچین حرفی بزنید
    این نمونه تقویم Falad هست که فقط با تغییر فونت به این شکل در اومده
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.JPG‏ (28.5 کیلوبایت, 620 دیدار)

  40. #40

    Talking

    نقل قول نوشته شده توسط پرواز مشاهده تاپیک
    چون ما ایرانی ها معمولاً به اینترفیس برنامه که یکی از مهمترین فاکتورهای برنامه نویسیه اهمیت نمیدیم.
    شاید از لحاظ ساختاری خیلی خوب کار کرده باشیم. ولی به ظواهر نمی رسیم.
    من با عکس این قضیه بیشتر موافقم
    ...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •