Hirdetés

Új hozzászólás Aktív témák

  • cigam

    félisten

    válasz rongyi #914 üzenetére

    Batch-ban elég körülményes, mert az adott hónap határozza meg, hogy hány napos(nem is beszélve a szökőévekről)

    Általában erre van a legtöbb találat:
    ::================================================
    :: TOMORROW.BAT - Written by Paul Tomasi (c)2010
    ::
    :: Function to return tomorrow's date
    ::================================================
    @echo off

    set /a d=%date:~0,2%
    set /a m=%date:~3,2%
    set /a y=%date:~6,4%

    :loop
    set /a d+=1

    if %d% gtr 31 (
    set d=1
    set /a m+=1

    if %m% gtr 12 (
    set m=1
    set /a y+=1
    )
    )

    xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop

    echo %d%/%m%/%y%

    De ugye itt minden hónap 31 napos. Ezt elkerülendő egy ügyes trükk, hogy kiszámolod hogy a jelenlegi (Julianus) naptár szerinti hányadik nap van ma. Ahhoz hozzáadsz 1-et, és kiszámolod, hogy az melyik év hányadik haónapjának melyik napja.:
    @echo off &SETLOCAL
    SET "today=%date%"
    ECHO(today is %today%
    CALL:DateToJDN %today% todayNo
    ECHO(this is day no. %todayNo%
    SET /a tomorrowNo=todayNo+1
    ECHO(tomorrow is day no. %tomorrowNo%
    CALL:JDNToDate %tomorrowNo% tomorrow
    ECHO(tomorrow is %tomorrow%
    GOTO:EOF

    rem Convert the date to Julian Day Number

    :DateToJDN dd.mm.yyyy jdn=
    setlocal
    set date=%1
    set /A yy=%date:~-4%, mm=1%date:~-7,2% %% 100, dd=1%date:~-10,2% %% 100
    set /A a=mm-14, jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075
    endlocal & set %2=%jdn%
    exit /B

    rem Convert Julian Day Number back to date

    :JDNToDate jdn dd.mm.yyyy=
    setlocal
    set /A l=%1+68569,n=(4*l)/146097,l=l-(146097*n+3)/4,i=(4000*(l+1))/1461001,l=l-(1461*i)/4+31,j=(80*l)/2447,dd=l-(2447*j)/80,l=j/11,mm=j+2-(12*l),yy=100*(n-49)+i+l
    if %dd% lss 10 set dd=0%dd%
    if %mm% lss 10 set mm=0%mm%
    endlocal & set %2=%dd%.%mm%.%yy%
    exit /B

    endlocal

    Csak itt is figyelni kell, hogy angol, vagy magyar kiosztású a dátum.

    [ Szerkesztve ]

    Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

Új hozzászólás Aktív témák