AppleScript: come ottenere tempo senza secondi? In alternativa, come rimuovere il testo nel mezzo della stringa?

4

Se usi il seguente codice:

set CurrentTime to (time string of (current date))

Il CurrentTime verrà impostato nel seguente formato:

12:02:38 PM

Tuttavia, desidero CurrentTime essere:

12:02 PM

Quindi, voglio rimuovere i caratteri nelle posizioni 6, 7 e 8 nella stringa.

Come può essere realizzato in AppleScript? Grazie.

    
posta rubik's sphere 08.11.2016 - 18:24
fonte

4 risposte

3

Puoi usare qualcosa come questo:

set CurrentTime to (do shell script "date +\"%l:%M %p\" | awk '{$1=$1;print}'")

Ci sono più informazioni su date e i suoi modificatori su cyberciti .

%l - hour (1..12)
%M - minute (00..59)
%p - locale’s equivalent of either AM or PM; blank if not known
    
risposta data 08.11.2016 - 21:06
fonte
3

Ecco un AppleScript subroutine Ho trovato una ricerca su Google che fa ciò che hai chiesto.

on getTimeInHoursAndMinutes()
    -- Get the "hour"
    set timeStr to time string of (current date)
    set Pos to offset of ":" in timeStr
    set theHour to characters 1 thru (Pos - 1) of timeStr as string
    set timeStr to characters (Pos + 1) through end of timeStr as string

    -- Get the "minute"
    set Pos to offset of ":" in timeStr
    set theMin to characters 1 thru (Pos - 1) of timeStr as string
    set timeStr to characters (Pos + 1) through end of timeStr as string

    --Get "AM or PM"
    set Pos to offset of " " in timeStr
    set theSfx to characters (Pos + 1) through end of timeStr as string

    return (theHour & ":" & theMin & " " & theSfx) as string
end getTimeInHoursAndMinutes

set CurrentTime to getTimeInHoursAndMinutes()
    
risposta data 08.11.2016 - 20:59
fonte
1

Un'opzione solo per AppleScript è:

# your line
set CurrentTime to (time string of (current date))
# place all the words of the time string into a list
set EveryWord to every word of CurrentTime
# do a very basic test on what we got and assemble the string using the parts plus separators
if length of EveryWord = 4 then
    # if we have 4 words, there must be a form of AM/PM
    set CurrentTime to item 1 of EveryWord & ":" & item 2 of EveryWord & " " & item 4 of EveryWord
else
    # 24-hour clock
    set CurrentTime to item 1 of EveryWord & ":" & item 2 of EveryWord
end if
    
risposta data 14.11.2016 - 00:33
fonte
0

Questo è semplicistico, ma l'ho usato per risolvere un problema simile e funziona per il tuo esempio. Decolla solo AM o PM, cancella i caratteri che non si desidera, quindi aggiunge di nuovo AM o PM. L'ultima riga utilizza la finestra di visualizzazione per mostrare il risultato.

set CurrentTime to (time string of (current date))
set revisedTime to CurrentTime as string
set myAMPM to text -1 thru -3 of revisedTime
set revisedTime to text 1 thru -7 of revisedTime
set revisedTime to revisedTime & myAMPM
display dialog revisedTime
    
risposta data 12.03.2017 - 22:51
fonte

Leggi altre domande sui tag