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

نام تاپیک: فرمول بدست آوردن ایام هفته

  1. #1

    فرمول بدست آوردن ایام هفته

    سلام
    دوستان کسی فرمول بدست آوردن ایام هفته را ندارد ؟

    1386/5/1 --------> دوشنبه

  2. #2
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط Saeid59_m مشاهده تاپیک
    سلام
    دوستان کسی فرمول بدست آوردن ایام هفته را ندارد ؟
    1386/5/1 --------> دوشنبه
    1-اول فاصله دو تا تاریخ را به دست بیاور
    2-سپس باقی مانده عدد به دست آمده تقسیم بر 7 را به دست بیاور.
    3-سپس به عداد روزها باقی مانده به روز مورد نظر اضافه کن.
    مثال :تاریخ اول را تاریخ خودت را انتخاب کردم.
    تاریخ دوم : 1/6/1386
    1-اختلاف : 31
    2-باقی مانده 31 تقسیم بر 7 : 3
    3-3 روز به دوشنبه اضافه می کنم :پنج شنبه
    موفق باشی

  3. #3
    روش درست استفاده از تابع DayOfWeek هست ، ولی اول باید تاریخت رو به میلادی تبدیل کنی بعد بهش بدی.
    حساب کردن اختلاف تقریبا عملی نیست ، مگر اینکه همه پارامترها ، مثل سالهای کبیسه و تعداد روزهای ماههای مختلف رو در نظر بگیری!

  4. #4
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    در ادامه صحبتهای آقای ghabil
    بدست آوردن روز هفته dayofweek و استفاده از دستور case
    در ضمن یکشنبه اولین روز هفته هستش
    case dayofw
    0:sunday;
    1:monday;
    موفق باشی
    ...

  5. #5
    دوستان من قبلاً فرمولش رو داشتم . ولی حالا دقیق یادم نیست

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

  6. #6
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    آقا سعید وقتی از همین راه میشه مشکل رو برطرف کرد دیگه چرا راه حل دیگری رو امتحان کنیم

  7. #7
    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    آقا سعید وقتی از همین راه میشه مشکل رو برطرف کرد دیگه چرا راه حل دیگری رو امتحان کنیم
    درسته ولی روشی که شما گفته اید فقط برای تاریخ میلادی جواب می ده . من از تاریخ شمسی استفاده می کنم .

  8. #8
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    شما تستش کن اگه جواب نداد مشکل رو بگو
    از رو خود تاریخ سیستم (میلادی) به راحتی میشه روز رو پیدا کرد

  9. #9
    جمعه توی تاریخ میلادی با جمعه توی تاریخ شمسی چه فرقی میکنه؟
    هر دو شون توی تقویم یکیه

  10. #10
    جمعه توی تاریخ میلادی با جمعه توی تاریخ شمسی چه فرقی میکنه؟
    در تاریخ شمسی جمعه آخر هفته هست و تعطیله، در تاریخ میلادی روز پنجم هفته هست و تعطیل نیست.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  11. #11
    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    شما تستش کن اگه جواب نداد مشکل رو بگو
    از رو خود تاریخ سیستم (میلادی) به راحتی میشه روز رو پیدا کرد
    من مشکلم تاریخ جاری که نیست . مثلاً می خوام بدونم 1389/8/6 چند شنبه می شه .
    تا ریخ میلادی اون رو هم ندارم .

  12. #12
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط Saeid59_m مشاهده تاپیک
    من مشکلم تاریخ جاری که نیست . مثلاً می خوام بدونم 1389/8/6 چند شنبه می شه .
    تا ریخ میلادی اون رو هم ندارم .
    عزیر دل برادر من در پست دوم به فرمولی اشاره کردم که شما از آن استفاده کنید مشکل حل است و نیاز به تاریخ میلادی نیز ندارید.من تست کردن جواب داد.
    موفق باشید

  13. #13
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    آقا سعید اینم برنامه نمایش روز در یه تاریخ خاص
    استفاده از حلقه for : به دلیل refresh شدن تاریخ
    منتها تاریخ فعلی سیسمت رو یه جایی ذخیره کن
    فایل های ضمیمه فایل های ضمیمه

  14. #14
    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    آقا سعید اینم برنامه نمایش روز در یه تاریخ خاص
    استفاده از حلقه for : به دلیل refresh شدن تاریخ
    منتها تاریخ فعلی سیسمت رو یه جایی ذخیره کن
    دستت درد نکنه که کمک کردی . ولی برنامه ای که گذاشتی فقط برای تاریخ میلادی درست جواب می ده . برای تاریخ شمسی جواب غلطه . مثلا 1386/05/01 که وارد کردم می نویسه سه شنبه در صورتی که دوشنبه بود .

  15. #15
    نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
    در تاریخ شمسی جمعه آخر هفته هست و تعطیله، در تاریخ میلادی روز پنجم هفته هست و تعطیل نیست.
    آقای کشاورز تا جایی که بنده از سوال ایشون متوجه شدم مشکل تعطیل بودن روزها نیست. مشکل خود روزهای هفته هست.سوال کننده قصدش پیدا کردن روز هفته هست.
    در تقویم میلادی و شمسی روز های زیر همیشه معادل هستند و یک روند ثاب هست پس لازم نیست نگران متغیر بودن نتیجه در تاریخ های میلادی و شمسی باشیم
    Sat -> شنبه
    Sun-> یکشنبه
    .
    .
    .
    Fri->جمعه

    منظور من این بود...

  16. #16
    نقل قول نوشته شده توسط Saeid59_m مشاهده تاپیک
    دستت درد نکنه که کمک کردی . ولی برنامه ای که گذاشتی فقط برای تاریخ میلادی درست جواب می ده . برای تاریخ شمسی جواب غلطه . مثلا 1386/05/01 که وارد کردم می نویسه سه شنبه در صورتی که دوشنبه بود .
    سعید جان این برنامه این طور در نظر میگیره که این تاریخ سال 1386 میلادی هست.شما معادل میلادی تاریخت رو به برنامه بده.دوستان قبلا هم متذکر شدند.
    در ضمن من قبلا چند تا سورس یا کامپوننت در سایت برای تبدیل تاریخ ها ی میلادی به شمسی و بر عکس دیدم.

  17. #17
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    خوب میتونی یه کار کنی تاریخ شمسی رو به میلادی تبدیل کنی و بعد برنامه ای رو که نوشتم به صورت یه تابع صدا بزن و روز رو به دست بیار همین
    اگه تابع تبدیل رو هم نداری (که حتما داری) بگو تا برات بذارم

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



    Function Shamsi(Optional ByVal Date1 As String = "", Optional ByVal SmallDate1 As Boolean = False, Optional ByVal Year4Char As Boolean = True) As String
    Dim U, Ym, Rp, D, P, Sd, Ls, Ye, I, Mn, Yy, J, Dd As Integer
    'Dim d, p As Integer()
    Dim w, Mon, Days As String()
    Dim T4, T5, T6 As Integer(,)
    'd = New Integer() {20, 19, 20, 20, 21, 21, 22, 22, 22, 22, 21, 21}
    'p = New Integer() {11, 12, 10, 12, 11, 11, 10, 10, 10, 9, 10, 10}
    w = New String() {"یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"}
    T4 = New Integer(,) {{11, 12, 11, 11}, {12, 13, 12, 12}, _
    {11, 11, 10, 11}, {13, 12, 12, 12}, _
    {12, 11, 11, 11}, {12, 11, 11, 11}, _
    {11, 10, 10, 10}, {11, 10, 10, 10}, _
    {11, 10, 10, 10}, {10, 9, 9, 9}, _
    {11, 10, 10, 10}, {11, 10, 10, 10}}
    T5 = New Integer(,) {{20, 19, 20, 20}, {19, 18, 19, 19}, _
    {19, 20, 20, 20}, {19, 20, 20, 20}, _
    {20, 21, 21, 21}, {21, 21, 21, 21}, _
    {21, 22, 22, 22}, {21, 22, 22, 22}, _
    {21, 22, 22, 22}, {21, 22, 22, 22}, _
    {20, 21, 21, 21}, {20, 21, 21, 21}}
    T6 = New Integer(,) {{10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9}, _
    {11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}
    If SmallDate1 = True Then
    Mon = New String() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"}
    Else
    Mon = New String() {"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"}
    End If
    If SmallDate1 = True Then
    Days = New String() {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", _
    "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"}
    Else
    Days = New String() {"یکم", "دوم", "سوم", "چهارم", "پنجم", "ششم", "هفتم", "هشتم", "نهم", "دهم", _
    "یازدهم", "دوازدهم", "سیزدهم", "چهاردهم", "پانزدهم", "شانزدهم", "هفدهم", "هجدهم", "نوزدهم", "بیستم", _
    "بیست و یکم", "بیست و دوم", "بیست و سوم", "بیست و چهارم", "بیست و پنجم", "بیست و ششم", "بیست و هفتم", _
    "بیست و هشتم", "بیست و نهم", "سیم", "سی و یکم"}
    End If

    If Date1 = "" Then
    Date1 = Convert.ToString(Date.Now)
    End If
    Yy = Convert.ToDateTime(Date1).Year
    J = Convert.ToDateTime(Date1).Month
    Dd = Convert.ToDateTime(Date1).Day
    U = 0
    Rp = 0
    If KabiseM(Yy) = True Then
    U = 1
    End If
    Ym = Yy - 622
    If KabiseS(Ym) = True Then
    Rp = 1
    End If
    If (Rp = 0 And U = 1) Then
    I = 1
    ElseIf (Rp = 1 And U = 0) Then
    I = 2
    ElseIf (Rp = 0 And U = 0) Then
    I = 3
    Else
    I = 4
    End If
    D = T4(J - 1, I - 1)
    P = T5(J - 1, I - 1)
    If Dd <= P Then
    Sd = D + Dd - 1
    Mn = T6(0, J - 1)
    Ls = 1
    Else
    Sd = Dd - P
    Mn = T6(1, J - 1)
    Ls = 2
    End If
    If (J > 3 Or (Ls = 2 And J = 3)) Then
    Ye = Yy - 621
    Else
    Ye = Yy - 622
    End If

    '****************************
    '****************************
    If SmallDate1 = True Then
    If Year4Char = True Then
    Shamsi = Trim(Str(Ye)) + "/" + Trim(Mon(Mn - 1)) + "/" + Trim(Days(Sd - 1))
    Else
    Shamsi = Mid(Trim(Str(Ye)), 3, 2) + "/" + Trim(Mon(Mn - 1)) + "/" + Trim(Days(Sd - 1))
    End If
    Else
    If Year4Char = True Then
    Shamsi = w(Convert.ToDateTime(Date1).DayOfWeek) + " " + Days(Sd - 1) + " " + Mon(Mn - 1) + " " + Str(Ye)
    Else
    Shamsi = w(Convert.ToDateTime(Date1).DayOfWeek) + " " + Days(Sd - 1) + " " + Mon(Mn - 1) + " " + Mid(Trim(Str(Ye)), 3, 2)
    End If
    End If
    End Function
    Function KabiseS(ByVal Year As Integer) As Boolean
    Dim s, kkb, x, w As Integer
    s = (Year + 16) \ 33
    kkb = s * 33 - 16
    If kkb + 1 = Year Then
    KabiseS = False
    Else
    x = (Year + 15) \ 33
    w = Year - x - 17
    If (w Mod 4) = 0 Then
    KabiseS = True
    Else
    KabiseS = False
    End If
    End If
    End Function
    Function KabiseM(ByVal Year As Integer) As Boolean
    If (Year Mod 100) = 0 Then
    If (Year Mod 400) = 0 Then
    KabiseM = True
    Else
    KabiseM = False
    End If
    Else
    If (Year Mod 4) = 0 Then
    KabiseM = True
    Else
    KabiseM = False
    End If
    End If
    End Function



  19. #19
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    با سلام
    جناب gholihaghighi عزیز بهتره نبود به جای این همه کد همون برنامه رو آپلود میکردی
    موفق باشی

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

  21. #21
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    آنجا سرای ابدی است
    پست
    2,011
    تاریخ میلادی به شمسی و برعکس بارها گفته شده است. من تاریخم را به میلادی تبدیل می کنم و بعد ل=از فرمول گفته شده استفاده می کنم.

  22. #22

    راه حل

    دوستان برای این مسئله راه حلهای زیادی ارائه کرده اند . اما خودم تونستم یه تابع بنویسم که تاریخ شمسی رو دریافت کنه و اعداد 0 تا 6 رو بعنوان خروجی ، به صورتی که 0 معرف "شنبه" ، 1 معرف "یکشنبه" و ... و 6 معرف "جمعه" باشد .

    امیدوارم مفید باشه .


    Function DayOfWeek_Shamsi (y,m,d:integer):integer;
    Var
    Sum:int64;
    Begin

    Sum:=y div 4;
    sum:=sum+(y*365);

    if m<=6 then Sum:=Sum+((m-1)*31)+d else Begin
    Sum:=Sum+(6*31)+d;
    Sum:=Sum+((m-7)*30);
    End;

    DayOfWeek_Shamsi:=Sum Mod 7;

    End;



  23. #23
    کاربر دائمی آواتار delphi5
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    پست
    350

    نقل قول: فرمول بدست آوردن ایام هفته

    نقل قول نوشته شده توسط ghabil مشاهده تاپیک
    روش درست استفاده از تابع DayOfWeek هست ، ولی اول باید تاریخت رو به میلادی تبدیل کنی بعد بهش بدی.
    حساب کردن اختلاف تقریبا عملی نیست ، مگر اینکه همه پارامترها ، مثل سالهای کبیسه و تعداد روزهای ماههای مختلف رو در نظر بگیری!


    با سلام
    من از تابع dayofweek استفاده میکنم اما بدرستی جواب نمی گیرم .من تاریخ میلادی رو با استفاده از keyboard وارد میکنم (فرمت DD/MM/YY) .
    کسی میتونه این مشکل رو حل کنه ؟



    ADate:=strtodate(trim(dday)+'/'+trim(mmonth)+'/'+copy(trim(myear),3,2));
    with ADOTable1 do
    begin
    Connection:=ADOConnection1;
    TableName:='db_dayofweek';
    ADOConnection1.Connected:=true;
    Active:=true;
    first;
    don:=false;
    don:=Locate('ad'{table field that store number of day like 1,2,...},trim(inttostr(DayOfWeek(ADate))),[Lopartialkey]);
    if don then
    begin
    eweek.Caption:=trim(ADOTable1.fieldbyname('ename') .asstring);
    fweek.Caption:=trim(ADOTable1.fieldbyname('fname') .asstring);
    end;
    First;
    Active:=false;
    end;


  24. #24
    کاربر دائمی آواتار delphi5
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    پست
    350

    نقل قول: فرمول بدست آوردن ایام هفته

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

  25. #25

    نقل قول: فرمول بدست آوردن ایام هفته

    برنامت اشتباس دادا
    1/10/93 میشه دوشنبه این شنبه میده

  26. #26

    نقل قول: فرمول بدست آوردن ایام هفته

    از توابع این لینک استفاده کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  27. #27

    نقل قول: فرمول بدست آوردن ایام هفته



    Dim MyCalendar As New System.Globalization.PersianCalendar
    Result = Date.Now.ToShortDateString
    ((((Result = MyCalendar.GetDayOfWeek(New Date(CInt(Result.Split("/")(0)), CInt(Result.Split("/")(1)), CInt(Result.Split("/")(2
    Select Case Result
    Case 6
    Result = "شنبه"
    Case 0
    Result = "یکشنبه"
    Case 1
    Result = "دوشنبه"
    Case 2
    Result = "سه شنبه"
    Case 3
    Result = "چهارشنبه"
    Case 4
    Result = "پنج شنبه"
    Case 5
    Result = "جمعه"
    End Select
    آخرین ویرایش به وسیله masoud.rhb : شنبه 11 بهمن 1393 در 11:36 صبح

  28. #28

    Lightbulb نقل قول: فرمول بدست آوردن ایام هفته

    يه برنامه اي قبلا در اين زمينه نوشته بودم ، فايل اجراييش رو مي توني از لينك زير دانلود كني
    ببين اگه منظورت همينه كه من نوشتم كدشو برات از آرشيوم بگردم پيدا كنم

    http://uplod.ir/xpacvv7ovz4p/Date2Date.zip.htm
    فایل های ضمیمه فایل های ضمیمه

  29. #29

    نقل قول: فرمول بدست آوردن ایام هفته

    دوستان فانکشنی که کاملا جواب می دهد
    Function DayOfWeek_Shamsi(Tarikh:String):String;
    Var
    Sum:int64;
    day:String;
    y,m,d:integer;
    Begin

    IF Length(Tarikh)=6 THEN
    begin
    y:=StrToInt(copy(Tarikh,1,2));
    m:=StrToInt(copy(Tarikh,3,2));
    d:=StrToInt(copy(Tarikh,5,2));
    end
    else
    IF Length(Tarikh)=8 THEN
    begin
    y:=StrToInt(copy(Tarikh,1,2));
    m:=StrToInt(copy(Tarikh,4,2));
    d:=StrToInt(copy(Tarikh,7,2));
    end;


    Sum:=y div 4;
    sum:=sum+(y*365);

    if m<=6 then
    Sum:=Sum+((m-1)*31)+d
    else
    Begin
    Sum:=Sum+(6*31)+d;
    Sum:=Sum+((m-7)*30);
    end;

    DayOfWeek_Shamsi:=IntToStr(Sum Mod 7);
    Case StrToInt(Result) Of
    0:Result:= 'يکشنبه';
    1:Result:='دوشنبه';
    2:Result:='سه شنبه';
    3:Result:='چهارشنبه';
    4:Result:='پنج شنبه';
    5:Result:='جمعه';
    6:Result:='شنبه';
    end;

    End;


  30. #30

    نقل قول: فرمول بدست آوردن ایام هفته

    نقل قول نوشته شده توسط h_mohamadi مشاهده تاپیک
    دوستان فانکشنی که کاملا جواب می دهد
    Function DayOfWeek_Shamsi(Tarikh:String):String;
    Var
    Sum:int64;
    day:String;
    y,m,d:integer;
    Begin

    IF Length(Tarikh)=6 THEN
    begin
    y:=StrToInt(copy(Tarikh,1,2));
    m:=StrToInt(copy(Tarikh,3,2));
    d:=StrToInt(copy(Tarikh,5,2));
    end
    else
    IF Length(Tarikh)=8 THEN
    begin
    y:=StrToInt(copy(Tarikh,1,2));
    m:=StrToInt(copy(Tarikh,4,2));
    d:=StrToInt(copy(Tarikh,7,2));
    end;


    Sum:=y div 4;
    sum:=sum+(y*365);

    if m<=6 then
    Sum:=Sum+((m-1)*31)+d
    else
    Begin
    Sum:=Sum+(6*31)+d;
    Sum:=Sum+((m-7)*30);
    end;

    DayOfWeek_Shamsi:=IntToStr(Sum Mod 7);
    Case StrToInt(Result) Of
    0:Result:= 'يکشنبه';
    1:Result:='دوشنبه';
    2:Result:='سه شنبه';
    3:Result:='چهارشنبه';
    4:Result:='پنج شنبه';
    5:Result:='جمعه';
    6:Result:='شنبه';
    end;

    End;

    براي تاريخ 13931204 خروجي سه شنبه ميده كه درست نيست !

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

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