AppleScript: ¿Cómo obtener tiempo sin segundos? Alternativamente, ¿cómo eliminar el texto en medio de la cadena?

4

Si usas el siguiente código:

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

El CurrentTime se configurará en el siguiente formato:

12:02:38 PM

Sin embargo, quiero que CurrentTime sea:

12:02 PM

Por lo tanto, quiero eliminar los caracteres en las posiciones 6, 7 y 8 de la cadena.

¿Cómo se puede lograr esto en AppleScript? Gracias.

    
pregunta rubik's sphere 08.11.2016 - 18:24

4 respuestas

3

Puedes usar algo como esto:

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

Hay más información sobre date y sus modificadores en cyberciti .

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

Aquí hay un AppleScript subrutina encontré haciendo una búsqueda en Google que hace lo que me pediste.

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()
    
respondido por el user3439894 08.11.2016 - 20:59
1

Una opción exclusiva de AppleScript es:

# 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
    
respondido por el Phoenix 14.11.2016 - 00:33
0

Esto es simplista, pero lo usé para resolver un problema similar y funciona para tu ejemplo. Simplemente quita el AM o el PM, borra los caracteres que no desea y luego agrega el AM o el PM nuevamente. La última línea usa el diálogo de visualización para mostrar el resultado.

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
    
respondido por el caper 12.03.2017 - 22:51

Lea otras preguntas en las etiquetas