نمایش نتایج 1 تا 22 از 22

نام تاپیک: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

  1. #1
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,703

    Cool بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    اینم واسه کسانی که می خوان روزهای مابین دو تا تاریخ شمسی رو محاسبه کنند ، برای یه پروژه نیاز شد که این تابع رو (بهمراه یه تابع کمکی) بنویسم بد ندیدم اینجا بزارمشون تا دیگران هم استفاده کنند البته سالهای کبیسه رو محاسبه نمی کنه و روز پایانی سال از ماه دوازدهم رو کم نمی کنه



    Function GetDiffDays(ByVal FirstDate As String, ByVal SecondDate As String) As Integer
    Dim FirstDay, FirstMonth, FirstYear, SecondDay, SecondMonth, SecondYear As String
    ' FirstDate = "1391/02/05" : SecondDate = "1391/03/02"
    Dim FD, FM, FY, SD, SM, SY, ExpDays As Integer
    ' Split First Date As FirstDay, FirstMonth and FirstYear As String
    FirstDay = Split(FirstDate, "/")(2)
    FirstMonth = Split(FirstDate, "/")(1)
    FirstYear = Split(FirstDate, "/")(0)
    ' Integer of Day of First Date
    FD = CInt(If(Left(FirstDay, 1) = "0", Right(FirstDay, 1), FirstDay))
    ' Integer of Month of First Date
    FM = CInt(If(Left(FirstMonth, 1) = "0", Right(FirstMonth, 1), FirstMonth))
    ' Integer of Year of First Date
    FY = CInt(FirstYear)
    ' Split Second Date As SecondDay, SecondMonth and SecondYear As String
    SecondDay = Split(SecondDate, "/")(2)
    SecondMonth = Split(SecondDate, "/")(1)
    SecondYear = Split(SecondDate, "/")(0)
    ' Integer of Day of Second Date
    SD = CInt(If(Left(SecondDay, 1) = "0", Right(SecondDay, 1), SecondDay))
    ' Integer of Month of Second Date
    SM = CInt(If(Left(SecondMonth, 1) = "0", Right(SecondMonth, 1), SecondMonth))
    ' Integer of Year of Second Date
    SY = CInt(SecondYear)
    ExpDays = If(SY < FY, 0, (SY - FY) * 365)
    ExpDays += If(SM > FM, MonthDays(SM) - MonthDays(FM), 0)
    ' ExpDays -= If(SM < FM, MonthDays(FM - SM), 0)'
    ExpDays += If(SD > FD, SD - FD, 0)
    ' ExpDays -= If(SD < FD, FD - SD, 0)'
    Return ExpDays
    End Function

    Function MonthDays(ByVal MonthInt As Integer) As Integer
    Dim DiffDays As Integer = 0
    DiffDays = If(MonthInt <= 7, MonthInt * 30, ((MonthInt - 7) * 31) + 210)
    Return DiffDays
    End Function


    تابع MonthDays اشتباها 6 ماه اول رو 30 روزه حساب می کرد با این جایگزین می شه:

       Function MonthDays(ByVal MonthInt As Integer) As Integer
    Dim DiffDays As Integer = 0
    DiffDays = If(MonthInt <= 7, ((MonthInt - 7) * 31) + 210, MonthInt * 30)
    Return DiffDays
    End Function
    آخرین ویرایش به وسیله ROSTAM2 : شنبه 30 اردیبهشت 1391 در 10:40 صبح

  2. #2

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    با تشکر از شما دوست عزیز
    اما نیاز به این همه کد نیست فقط با یک خط کد میشه بدست آورد چه اختلاف ماه رو چه سال رو و چه روز رو
    امیدوارم که موفق باشی

  3. #3
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,703

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    نقل قول نوشته شده توسط aknj56 مشاهده تاپیک
    با تشکر از شما دوست عزیز
    اما نیاز به این همه کد نیست فقط با یک خط کد میشه بدست آورد چه اختلاف ماه رو چه سال رو و چه روز رو
    امیدوارم که موفق باشی
    دقت نکردی چی شد فاصله مابین دو تاریخ برحسب روز رو محاسبه می کنه یعنی سال و ماه و روز رو با هم به روز تبدیل می کنه...
    راستی شما اصلا این دستور و امتحان کردید؟

  4. #4
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

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

  5. #5
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    با اجازه تون من توابعی می دم که علاوه بر تفاوت دو تاریخ کارای دیگه ای هم می تونید بکنید:

        Private Function PersianDateDiff(Date1 As String, Date2 As String, Optional Interval As DateInterval = DateInterval.Day) As Integer
    Dim d1 = CDate(GregorianDate(Date1))
    Dim d2 = CDate(GregorianDate(Date2))
    Return DateDiff(Interval , d1, d2)
    End Function
    Private Function PersianDate(Optional InDate As Date = Nothing) As String
    Try
    If InDate.Year <= 1 Then InDate = Now
    Dim PClndr As New Globalization.PersianCalendar
    Dim DateInIran As String = PClndr.GetYear(InDate)
    DateInIran &= "/" & Strings.Right(("0" & PClndr.GetMonth(InDate)), 2)
    DateInIran &= "/" & Strings.Right(("0" & PClndr.GetDayOfMonth(InDate)), 2)
    Return DateInIran
    Catch ex As Exception
    Return ""
    End Try
    End Function
    Private Function GregorianDate(InDate As String) As String
    If InDate.Length <> 10 Then Return ""
    Dim Year As Integer = Mid(InDate, 1, 4)
    If Year < 1300 OrElse Mid(InDate, 1, 4) > 1500 Then Return ""
    Dim Month As Integer = Mid(InDate, 6, 2)
    If Not IsNumeric(Month) OrElse Month > 12 OrElse Month < 1 Then Return ""
    Dim Day As Integer = Mid(InDate, 9, 2)
    If Day < 1 OrElse Day > 31 Then Return ""
    Try
    Dim PClndr As New Globalization.PersianCalendar
    Return PClndr.ToDateTime(Year, Month, Day, 0, 0, 0, 0).ToString
    Catch ex As Exception
    Return ""
    End Try
    End Function

  6. #6
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    این واسه اینکه بتونید نتایج رو با هم مقایسه کنید:
    کد های من و خودتون رو باه یه جا (داخل فرم) کپی کنید (یه لیت باکس هم به فرم اضافه کنید)

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim strYear As Integer = 1390
    Dim strDM = "/01/01"
    For i = 0 To 10
    Dim d1 = (strYear + i) & strDM
    Dim d2 = strYear & strDM
    Me.ListBox1.Items.Add(String.Format("You: {0} - {1} = {2}", d1, d2, GetDiffDays(d1, d2)))
    Me.ListBox1.Items.Add(String.Format("You: {0} - {1} = {2}", d2, d1, GetDiffDays(d2, d1)))
    Me.ListBox1.Items.Add("")
    Me.ListBox1.Items.Add(String.Format("Me: {0} - {1} = {2}", d1, d2, PersianDateDiff(d1, d2)))
    Me.ListBox1.Items.Add(String.Format("Me: {0} - {1} = {2}", d2, d1, PersianDateDiff(d2, d1)))
    Me.ListBox1.Items.Add("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -")
    Next
    End Sub

  7. #7
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    نقل قول نوشته شده توسط aknj56 مشاهده تاپیک
    با تشکر از شما دوست عزیز
    اما نیاز به این همه کد نیست فقط با یک خط کد میشه بدست آورد چه اختلاف ماه رو چه سال رو و چه روز رو
    امیدوارم که موفق باشی
    دوست عزیز می تونید اون یه خط کد رو برامون بنویسید!

  8. #8
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,703

    Cool نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    خسته نباشید فرید خان ، دستتون درد نکنه منم مشکلم همین بود که نمی دونستم سالهای کبیسه رو چطور حساب کنم

    سال ها اگه پس و پیش بشن یکیشون صفر بر می گردونه (به جای منفی)
    خواستم که صفر پس بده، به فاصله زمانی دقیق اونا برای محاسبه اولویت بندی نیاز بود

    عالی بود، ممنون از شما
    آخرین ویرایش به وسیله ROSTAM2 : شنبه 30 اردیبهشت 1391 در 10:53 صبح دلیل: ...

  9. #9

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    (TextBox3.Text = DateDiff("d", TextBox1.Text, TextBox2.Text
    این کد رو داخل یک button بگذارید و 3 تکس باکس بذارید توی فرم
    برای محاسبه اختلاف بین روز از d و برای محاسبه ماه از m و برای محاسبه سال y استفاده میکنیم ضما تکس باکس اول تاریخ شروع محاسبه و تکس باکس دوم تاریخی که میخاهیم اختلاف با آن را حساب کنیم است
    ضمنا تاریخ ور هم طوری تنظیم کنید که به شکل 1391/1/1 باشد
    امتحان کنید و نظر بدهید

  10. #10
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,703

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    (TextBox3.Text = DateDiff("d", TextBox1.Text, TextBox2.Text

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

  11. #11
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    نقل قول نوشته شده توسط aknj56 مشاهده تاپیک
    (TextBox3.Text = DateDiff("d", TextBox1.Text, TextBox2.Text
    این کد رو داخل یک button بگذارید و 3 تکس باکس بذارید توی فرم
    برای محاسبه اختلاف بین روز از d و برای محاسبه ماه از m و برای محاسبه سال y استفاده میکنیم ضما تکس باکس اول تاریخ شروع محاسبه و تکس باکس دوم تاریخی که میخاهیم اختلاف با آن را حساب کنیم است
    ضمنا تاریخ ور هم طوری تنظیم کنید که به شکل 1391/1/1 باشد
    امتحان کنید و نظر بدهید
    دوست عزیز امتحان نمی خواد شما به این تاپیک (از پست 5 به بعد) برید جوابتون رو دادم

  12. #12

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    با سلام دوست عزیز
    شما اول اونو امتحان بکن
    برای تاریخ شمسی هم کار میکنه

  13. #13
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    نقل قول نوشته شده توسط aknj56 مشاهده تاپیک
    با سلام دوست عزیز
    شما اول اونو امتحان بکن
    برای تاریخ شمسی هم کار میکنه
    شما هم اول به اون جایی که گفتم سربزن می فهمی که من امتحان کردم یا نه!!!

  14. #14

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    سلام دوست عزیز این نمونه برنامه رو دانلود کن ببین اختلاف ماه روز وسال ر و در میاره یا نه؟
    نظر بده
    http://p30upload.com/download.php?fi...plication1.rar

  15. #15
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    سلام
    دوست عزیز اولا باید از تلاش و نیت خیر شما تشکر کنم
    و لطف می کنید این تاریخ ها رو با کد خودتون تست کنید

    1390/12/1 با 1/1/1391

    و

    1390/11/12 با 1/12/1390

    اگه تست کردید بگید!

  16. #16
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,703

    Lightbulb نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    نقل قول نوشته شده توسط Farid.N مشاهده تاپیک
    سلام
    دوست عزیز اولا باید از تلاش و نیت خیر شما تشکر کنم
    و لطف می کنید این تاریخ ها رو با کد خودتون تست کنید

    1390/12/1 با 1/1/1391

    و

    1390/11/12 با 1/12/1390

    اگه تست کردید بگید!
    1391/2/2 .. 1391/3/2 .. 28

    1391/4/2 .. 1391/5/2 .. 30

    1391/7/2 .. 1391/8/2 .. 31

    1391/8/2 .. 1391/9/2 .. 31


    1391/10/2 .. 1391/11/2 .. 31


    این چندتا تاریخ رو تست کنی می بینی که بصورت میلادی محاسبه می شن یعنی ماههای 28 روزه 30 و 31 روزه تر تیب خاصی ندارن ولی تو تاریخ شمسی 6 ماه اول 31 روزه و 6 ماه دوم 30 روزه است که ماه دوازدهم 29 روزه هم میشه

  17. #17
    کاربر دائمی آواتار sehm67
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    شاهدژ بالاده
    پست
    266

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    سلام

    یه نگاهی به برنامه زیر بندازید

    امکاناتی از قبیل :

    اختلاف بین تاریخ

    تاریخ شمسی ، میلادی

    تبدیل تاریخ ها

    جمع تاریخ

    تاریخ امروز ، دیروز ، فردا ، یک هفته بعد و ...

    تعیین کبیسه بودن

    و ...
    فایل های ضمیمه فایل های ضمیمه

  18. #18
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    نقل قول نوشته شده توسط sehm67 مشاهده تاپیک
    سلام

    یه نگاهی به برنامه زیر بندازید
    امکاناتی از قبیل :
    اختلاف بین تاریخ
    تاریخ شمسی ، میلادی
    تبدیل تاریخ ها
    جمع تاریخ
    تاریخ امروز ، دیروز ، فردا ، یک هفته بعد و ...
    تعیین کبیسه بودن
    و ...
    دوست عزیز کمپوننت برای این نوع کارا زیاده یه سرچ کوچیک تو همین سایت هم بزنید می بینید
    اگه کد PersianToolS.dll رو داریئ بذارید اگر هم که نه پس این پروژه شما بار علمی زیادی برای ما نخواهد داشت!

  19. #19
    کاربر تازه وارد آواتار mehrbani
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    70

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    با استفاده از PersianCalendar خود NET Framework. ابتدا تاریخ ها رو به میلادی تبدیل کنید و سپس با استفاده از متد DateTime.Subtract اختلاف دو تاریخ را به سال ، ماه ، هفته ، روز ، ساعت ، دقیق ، ثانیه به دست بیارین.نیازی به این همه مشقت نیست دوستان

  20. #20
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    نقل قول نوشته شده توسط mehrbani مشاهده تاپیک
    با استفاده از PersianCalendar خود NET Framework. ابتدا تاریخ ها رو به میلادی تبدیل کنید و سپس با استفاده از متد DateTime.Subtract اختلاف دو تاریخ را به سال ، ماه ، هفته ، روز ، ساعت ، دقیق ، ثانیه به دست بیارین.نیازی به این همه مشقت نیست دوستان
    پست پنجم همین تاپیک رو با دقت بیشتری بخونید (تابع اول همین کار رو می کنه!)

  21. #21
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    101

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( فاصله مابین دو تاریخ شمسی بر حسب روز )

    با سللام و ممنون بابت زحماتتون یه سوال اگه ما تعداد روز های بین دو تاریخ رو بخواهیم پس تابع PersianDate چه نقشی در برنامه شما داره .

  22. #22
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: بدست آوردن روزهای مابین دو تاریخ شمسی ( تفاضل روزهای مابین دو تاریخ شمسی )

    سلام

    فکر کنم هنوز تعداد از دوستان هنوز متوجه قضیه نشدن!
    مثال خیلی جالب این مورده که میلادی یه ماه 28 روزه داره! (همین ماه بعدی یعنی فبریه 2013 رو ببینید)
    حالا به نظر شما از اول ان ماه به اندازه دو ماه بریم جلو تعداد روز ها درست در میاد (چون محاسبه سیستم میلادی این ماه رو معادل 28 روز حساب می کنه و جمع میزنه

    یا مورد دیگه اینکه ترتیب ماه های 30 رزوه و 31 روزه ما و اونا فرق می کنه
    همین الان موس رو ببرید رو ساعت سیستم و خودتون ببینید!

تاپیک های مشابه

  1. پاسخ: 3
    آخرین پست: پنج شنبه 26 خرداد 1390, 12:19 عصر
  2. سوال: بدست آوردن تاریخ سیستم(شمسی)
    نوشته شده توسط pedramfj در بخش C#‎‎
    پاسخ: 3
    آخرین پست: شنبه 30 مرداد 1389, 15:30 عصر
  3. پاسخ: 17
    آخرین پست: دوشنبه 10 اسفند 1388, 22:09 عصر
  4. بدست آوردن تعداد روزهای بین دو تاریخ شمسی در SQL
    نوشته شده توسط odiseh در بخش SQL Server
    پاسخ: 4
    آخرین پست: سه شنبه 17 بهمن 1385, 17:26 عصر
  5. بدست آوردن تعداد روزهای بین دو تاریخ
    نوشته شده توسط sarina در بخش VB.NET
    پاسخ: 1
    آخرین پست: شنبه 29 آذر 1382, 00:22 صبح

برچسب های این تاپیک

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

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