¿Cómo puedo formatear una hora a HHMM con AppleScript?

1

¿Es posible obtener la hora y los minutos en formato HHMM de 24 horas para que 1:01 sea 0101

Descubrí una forma de hacerlo durante el mes y el año, pero no puedo encontrar la manera de la hora y los minutos.

Esto es lo que tengo hasta ahora.

set whichUrl to 0
set fileNames to "map"
set theStartDate to the date "Tuesday, June 21, 2016 at 00:00:00"
set theEndDate to theStartDate + (60 * 60 * 24 * 365) --1 year
set theDate to theStartDate

repeat until theDate = theEndDate
        set theURL to "http://site.com/map.php?iso="

        set {year:y, month:m, day:d} to (theDate)
        set theModDate to (y * 10000 + m * 100 + d) as string

        set theURL to theURL & theModDate & hours of theDate
        set theURL to theURL & minutes of theDate

        tell application "Safari"
            activate
            set the URL of document 1 to theURL as text
            delay 2

        end tell
    set theDate to theDate + (600) --advance 10 minutes
    set whichUrl to whichUrl + 1
end repeat
    
pregunta Steve Torrence 09.04.2016 - 18:13

2 respuestas

0

Aquí hay una secuencia de comandos que toma la hora actual y la convierte en HHMM como usted lo solicitó.

-- preserve the current text item delimiters so we can put them back
set oldDelims to AppleScript's text item delimiters

set right_now to current date
set the_time to time string of right_now -- something like "4:20:56 PM"
set am_pm to characters -2 thru -1 of the_time as string -- is it AM or PM

set AppleScript's text item delimiters to ":"
set the_hour to text item 1 of the_time as string -- in this example, "4"
set the_minute to text item 2 of the_time as string -- in this example, "20"

if (am_pm is "PM") then
    set the_hour to the_hour + 12
end if

if the_hour is "24" then
    set the_hour to "12"
end if
-- that could have been more graceful but it's nice and obvious this way

if (count of the_hour) is 1 then -- padding with a zero if necessary
    set the_hour to "0" & the_hour
end if

if (count of the_minute) is 1 then -- padding with a zero if necessary
    set the_minute to "0" & the_minute
end if

set AppleScript's text item delimiters to ""
set steves_string to the_hour & the_minute as string -- putting the pieces together

set AppleScript's text item delimiters to oldDelims -- cleaning up

return steves_string -- you would not need this line, but for testing it's nice

Estoy seguro de que esto podría ajustarse, pero pensé que era educativo verlo paso a paso.

Ciertamente, podría pasar en cualquier momento que desee, no tiene que ser la "fecha actual". (Tenga en cuenta que la fecha actual también incluye la hora. Se despega de la parte "hora" de una fecha y se le pregunta "la cadena de tiempo".

    
respondido por el Christian Boyce 10.04.2016 - 01:28
0
set whichUrl to 0
set theStartDate to the date "Tuesday, June 21, 2016 at 00:00:00"
set theEndDate to theStartDate + (60 * 60 * 24 * 365) --365 normally
set theDate to theStartDate

repeat until theDate ≥ theEndDate
    if whichUrl ≥ 19997 and whichUrl ≤ 40000 then --In case I just want a range.
        set theURL to "http://siteaddress?iso="

        set theModDate to theDate

        set theModDate to theModDate as date
        set D to characters -2 through -1 of ("0" & theModDate's day) as text
        copy theModDate to tempDate
        set the month of tempDate to January
        set M to characters -2 thru -1 of ("0" & 1 + (theModDate - tempDate + 1314864) div 2629728) as text
        set Y to characters -1 thru -4 of ((year of theModDate) as text) as text
        set hh to "0" & theModDate's hours as text
        set hh to characters ((count of hh) - 1) through (count of hh) of hh
        set mm to "0" & theModDate's minutes as text
        set mm to characters ((count of mm) - 1) through (count of mm) of mm
        set ss to "0" & theModDate's seconds as text
        set ss to characters ((count of ss) - 1) through (count of ss) of ss
        set theDateTxt to (Y & M & D & "T" & hh & mm as text)
        set theURL to theURL & theDateTxt
        set AppleScript's text item delimiters to ","
        do shell script "curl -o ~/test/test.php." & theDateTxt & ".jpg 'http://siteaddress?iso='" & theDateTxt
        set AppleScript's text item delimiters to ""
    end if
    set theDate to theDate + (900) --seconds (1800 is 30 minutes)
    set whichUrl to whichUrl + 1
end repeat
    
respondido por el Steve Torrence 11.04.2016 - 19:38

Lea otras preguntas en las etiquetas