Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. تاریخ فردا
Forum Updated to NodeBB v4.3 + New Features

تاریخ فردا

Scheduled Pinned Locked Moved Persian
15 Posts 3 Posters 14.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    vahid
    wrote on last edited by
    #1

    چطوری میشه تاریخ مثلا سه روز دیگه رو گرفت؟
    یه تابع می خوام که تاریخ یه روزو بگیره هفت تا تاریخ روز های هفته ای که اون روز توشه رو برگردونه
    واسه این مثلا می شه با یه تابع فهمید اون روز چندشنبست بعد مثلا اگه یکشنبه بود (یعنی روز دوم)تاریخ یک روز قبل و پنج روز بعد رو بده

    1 Reply Last reply
    0
    • I Offline
      I Offline
      iraj.jelo
      wrote on last edited by
      #2

      توی پایتون اینجوری می شه اسم یه روز رو از روی تاریخش رو در اورد:

      from datetime import date
      oldDate = date(1911, 11, 11) # year, month, day
      dayofWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
      print "The day of the week on %s was a %s" % (oldDate.strftime("%d%b%Y"), dayofWeek[date.weekday(oldDate)])

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

      1 Reply Last reply
      0
      • I Offline
        I Offline
        iraj.jelo
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • I Offline
          I Offline
          iraj.jelo
          wrote on last edited by
          #4

          import datetime

          today = datetime.date.today()
          print 'Today :', today

          one_day = datetime.timedelta(days=1)
          print 'One day :', one_day

          yesterday = today - one_day
          print 'Yesterday:', yesterday

          tomorrow = today + one_day
          print 'Tomorrow :', tomorrow

          print 'tomorrow - yesterday:', tomorrow - yesterday
          print 'yesterday - tomorrow:', yesterday - tomorrow

          1 Reply Last reply
          0
          • V Offline
            V Offline
            vahid
            wrote on last edited by
            #5

            ببین تابع این هست که بگه امروز چندشنبست

            من می خوام بدونم مثلا این هفته از چه تاریخی شروع میشه
            چه تاریخی تموم میشه
            ورودیم یه تاریخه مثلا ۴ ام که میدونم یکشنبست
            می خوام ۳ و۴و۵و۶و۷و۸ و نهم روخروجی بگیرم

            حالا اگه این تاریخ جمعه ۲۹ ام بود فردا میشه چندم؟
            اگه آخر سال بود چی؟
            بستنگی داره سال کبیست یا نه
            من تاریخ روز قبل رو هم می خوام
            برا همین خیلی شرط می خواد
            راه دیگه ای نیست؟

            1 Reply Last reply
            0
            • V Offline
              V Offline
              vahid
              wrote on last edited by
              #6

              همین برای کیوت نیست؟

              1 Reply Last reply
              0
              • I Offline
                I Offline
                iraj.jelo
                wrote on last edited by
                #7

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

                به این خط دقت کن:
                one_day = datetime.timedelta(days=1)
                tomorrow = today + one_day
                ارگومان دی ز در خط اول اگر یک عدد مثبت باشه مثلا 10 ، ده روز به تاریخ مورد نظر که در اینجا تاریخ امروز هست رو حساب می کنه. اگر عدد منفی باشه تاریخ روز های قبل رو بر می گردونه برای مثال اگر منفی یک بذاریم و اون رو با تاریخ امروز جمع کنیم تاریخ دیروز رو بمون می ده.

                شما در این الگوریتم اگر از توابع تبدیل تاریخ میلادی به شمسی و شمسی به میلادی استفاده می کنی به آگاهی از کبیسه بودن یا نبودن سال نیازی نداری. فقط کافیه مثلا 21 بهمن رو به تاریخ میلادیش تبدیل کنی و تعداد روزهای قبل و بعدش رو می خای حساب کنی و دوباره به شمسی برگردونی.

                1 Reply Last reply
                0
                • I Offline
                  I Offline
                  iraj.jelo
                  wrote on last edited by
                  #8

                  اره این کار با کیوتی هم قابل انجامه. الان یه نیگاهی به ماژول زیر انداختم دیدم متد هایی همه رو داره:
                  QtCore.QDate

                  بعد از امتحانم که وقت آزاد داشتم حتما این برنامه رو که گفتین هم با توابع کیوتی و هم با توابع استاندارد زبان پیاده می کنم

                  1 Reply Last reply
                  0
                  • I Offline
                    I Offline
                    iraj.jelo
                    wrote on last edited by
                    #9

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

                    today = QDate.currentDate()
                    print today
                    PyQt4.QtCore.QDate(2012, 6, 29)
                    print today.weekNumber()
                    (26, 2012)

                    امروز بیست و ششمین هفته سال میلادی می باشد. اولین روز هفته میلادی دوشنبس پس شنبه می شه ششمین روز هفته میلادی و جمعه می شه پنجمین روز

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

                    حالا یه مثال می زنم تا روشن شه. خب امروز 29 ام جون دو هزار و دوازدس
                    اول میام با کیوتی شماره ی هفته رو در سال بصورت زیر بدست میارم:

                    today = QDate.currentDate()
                    print today
                    PyQt4.QtCore.QDate(2012, 6, 29)
                    print today.weekNumber()
                    (26, 2012)

                    خب اینجا فهمیدم که در بیست و ششمین هفته سال قرار داریم. حالا روز شنبه رو که در میلادی ششمین روز هفته هست رو محاسبه می کنم:

                    time.asctime(time.strptime('2012 26 6', '%Y %W %w'))
                    'Sat Jun 30 2012'
                    و بعد اون رو که به شمسی بر گردونم می شه
                    10/4/1391 شنبه

                    برای جمعه هم می شه همین کار رو کرد ولی جمعه روز پنجم هفته میلادیه

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

                    1 Reply Last reply
                    0
                    • V Offline
                      V Offline
                      vahid
                      wrote on last edited by
                      #10

                      ممنون از راهنماییت

                      1 Reply Last reply
                      0
                      • V Offline
                        V Offline
                        vahid
                        wrote on last edited by
                        #11

                        بالاخره یافتم
                        چه قدر درگیر همین چیز ساده بودم:دی
                        http://fa.wikipedia.org/wiki/روز_ژولیوسی
                        یه چیزی هست به اسم روز ژولیوسی
                        کیو دیت دو تابع داره که روز ژولیوسی رو به تاریخ معمولی و تاریخ معمولی رو به روز ژولیوسی تبدیل می کنه

                        1 Reply Last reply
                        0
                        • V Offline
                          V Offline
                          vahid
                          wrote on last edited by
                          #12

                          کاش یه کلاس جامع مثل کیودیت برای تقویم شمسی وجود داشت
                          من برای پروژه ای که دارم انجام میدم کلی به دردسر افتادم
                          یه چیز خیلی ساده برای تبدیل میلادی به شمسی و برعکس نوشتم
                          https://gitorious.org/qdateconvertor
                          الگوریتم ها رو هم کنارش گذاشتم. در کل چیز کاملی نیست

                          نظرتون راجب اینکه یه کلاس مث کیو دیت بنویسیم چیه؟

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            soroush
                            wrote on last edited by
                            #13

                            [quote author="vahid" date="1341003339"]کاش یه کلاس جامع مثل کیودیت برای تقویم شمسی وجود داشت
                            من برای پروژه ای که دارم انجام میدم کلی به دردسر افتادم
                            یه چیز خیلی ساده برای تبدیل میلادی به شمسی و برعکس نوشتم
                            https://gitorious.org/qdateconvertor
                            الگوریتم ها رو هم کنارش گذاشتم. در کل چیز کاملی نیست

                            نظرتون راجب اینکه یه کلاس مث کیو دیت بنویسیم چیه؟

                            [/quote]
                            http://qt-project.org/forums/viewthread/12996/

                            1 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              soroush
                              wrote on last edited by
                              #14

                              [quote author="vahid" date="1340871519"]چطوری میشه تاریخ مثلا سه روز دیگه رو گرفت؟
                              یه تابع می خوام که تاریخ یه روزو بگیره هفت تا تاریخ روز های هفته ای که اون روز توشه رو برگردونه
                              واسه این مثلا می شه با یه تابع فهمید اون روز چندشنبست بعد مثلا اگه یکشنبه بود (یعنی روز دوم)تاریخ یک روز قبل و پنج روز بعد رو بده[/quote]

                              @QString QDate::shortDayName ( int weekday, MonthNameType type )@

                              Returns the short name of the weekday for the representation specified by type.

                              The days are enumerated using the following convention:

                              1 = "Mon"
                              2 = "Tue"
                              3 = "Wed"
                              4 = "Thu"
                              5 = "Fri"
                              6 = "Sat"
                              7 = "Sun"
                              The day names will be localized according to the system's locale settings.

                              @QDate QDate::addDays ( int ndays ) const@

                              Returns a QDate object containing a date ndays later than the date of this object (or earlier if ndays is negative).

                              1 Reply Last reply
                              0
                              • V Offline
                                V Offline
                                vahid
                                wrote on last edited by
                                #15

                                مرسی

                                1 Reply Last reply
                                0

                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved