回答:
次のようなものを使用できます。
set CurrentTime to (do shell script "date +\"%l:%M %p\" | awk '{$1=$1;print}'")
cybercitiには詳細date
とその修飾子があります。
%l - hour (1..12)
%M - minute (00..59)
%p - locale’s equivalent of either AM or PM; blank if not known
awk
して、先頭のスペースをトリミングします。
ここに、私が見つけたAppleScript サブルーチンがあります。これは、あなたが尋ねたものを実行するGoogle検索を実行しています。
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()
AppleScriptのみのオプションの1つは次のとおりです。
# 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
else
ブランチの時間要素は24時間でcurrent date
は表示されず、常にor があるため、ブランチはおそらくトリガーされません。情報を取得する場所からデフォルトを変更できる可能性があると思いますが。AM
PM
current date
current date
現在設定されているローカライズの日付と時刻を返します。それを頼りに米国のやり方で応答し、私のスクリプトが同僚のコンピューターで動作しなくなったとき、私はそのことを痛々しく知りました。テスト中、システムクロックを24時間に設定すると、出力が変更されることがわかりました。それどころかhours of (current date)
、真夜中(= 24時間)から経過した時間を常に返します。そのため、現在の日付と時刻を確認するときは、日付と時刻の部分を使用することをお勧めします。さらに、それを好きなように出力できるという利点もあります。
current date
たとえば、[ 2016年11月14日月曜日9:44:45 AM ] [] [24時間クロックを使用] チェックボックスをオンにしているかどうかに関係なく 、コメント。私のシステムでは、else
ブランチはトリガーされません。
これは単純ですが、これを使用して同様の問題を解決しました。これは例で機能します。AMまたはPMを削除し、不要な文字を削除してから、AMまたはPMを再び追加します。最後の行では、表示ダイアログを使用して結果を表示しています。
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