SSブログ

AppleScriptで取得する時間を操ってみる-NSDate- [AppleScript辞書はつくれるか?]

AppleScriptでオブジェクトを使うと、日時の値がまちまちな時がある。

あるときは『スタンダードなDate値』だったり、『NSDate型』だったりと変化してしまいます。

しかも、NSDateの値だとそのままではAppleScriptで使うことができない。時間などを直接に取り出すことができない。

なので、どの型であっても自動で統一させてみようかと思った。

 

スクリプトエディタ.app

use scripting additions

use framework "Foundation"

 

set aDate to current date -- "12:05" でも、date "2022/5/24" でも、NSDate形式でも可能

set output to my dateTextFormatter(aDate)

output

 

on dateTextFormatter(aDate)

(* date形式、日時テキスト、NSDate形式 に対応した フォーマッター経由の日時テキストへの変換 *)

try

if (class of aDate) = text then set aDate to date aDate --"12:34"のようなTEXTで入力された場合に対応

on error

log "日時への変換に失敗しました"

return false

end try

set aFormatter to current application's class "NSDateFormatter"'s alloc()'s init()

aFormatter's setLocale:(current application's class "NSLocale"'s alloc()'s initWithLocaleIdentifier:"ja_JP")

aFormatter's setDateFormat:"yyyyMd EEEE H:m:s"

set theTimeString to (aFormatter's stringFromDate:aDate) as string

return theTimeString --テキスト形式で返します

end dateTextFormatter

 

-- 結果:"20220524 火曜日 12:34:46"

 

上記では、入力がどんな形のDate値でもテキストとして出力できるようにした一例だが、下記のような設定を

色々いじれば、さまざまなカタチで作れるはずだ。

 

(色々な設定のしかた)

--set aDate to current application's class "NSDate"'s alloc()'s init()  --(current date) NSDateの初期化時に現在の日時が入る

set aDate to current application's class "NSDate"'s |date|()  --(current date)現在の日時の取得

 

set aFormatter to current application's class "NSDateFormatter"'s alloc()'s init()

                         -- ×:YYYY ◯:yyyy --YYYYはなぜか年末に年の数字だけが変わる場合がある (*1)

-- aFormatter's setDateFormat:"yyyyMd H時間ms --"20220524 11時間4244"

-- aFormatter's setDateFormat:"yyMd H時間ms --"220524 11時間4244"

-- aFormatter's setDateFormat:"yyyy/M/d H:m:s"  --"2022/05/24 11:42:44"

-- aFormatter's setDateFormat:"yyyy/M/d H:m:s.SSS"  --"2022/05/24 11:42:44.789"

aFormatter's setDateFormat:"yyyyMd EEEE H:m:s"  --"20220524 火曜日 11:42:44"

-- aFormatter's setDateFormat:"E"  -- "E""EEE" --> ""

-- aFormatter's setDateFormat:"EEEE"  --"火曜日"

 

aFormatter's setTimeZone:(current application's class "NSTimeZone"'s timeZoneWithAbbreviation:"JST")

                                            --日本時間に設定

 

--aFormatter's setLocale:(current application's class "NSLocale"'s systemLocale())

                              --"20220524 Tue 11:42:44" (システム)

aFormatter's setLocale:(current application's class "NSLocale"'s alloc()'s initWithLocaleIdentifier:"ja_JP") 

                           --"20220524 火曜日 11:42:44" (日本語)(*2)

 

-- (*1) 参考-日付がずれる:https://www.mt-megami.com/article/295203529

-- (*2) 参考-Localehttps://colo-ri.jp/develop/2011/12/ios-objective-c-get-each-locale-information.html (*2)

 

 

(Formatterで使える記号)

用途

文字

説明   例

紀元

G

西暦 AD H S T M

GGGG

令和 平成 昭和 大正 明治

*和暦は和暦用Locateを指定

yy

年の2桁     09

yyyy

年の4桁     2009

M MM

数字2桁   01 12

MMM

数字2桁   英字3字 Jan Dec

MMMM

1月 ~ 12

英字 January ~ December

d

数字2桁 0131

曜日

E

日 月 火 水 木 金 土

Sun Mon Tue Wed Thu Fri Sut

EEEE

日曜日 ~ 土曜日

Sunday, Monday, Tuesday, Wednesday

Thursday, Friday, Saturday

午前/午後

a

午前 午後 PM

(023)

H

 

(124)

k

 

午前/午後の時(011)

K

 

午前/午後の時(112)

h

 

m

00 59

s

00 59

ミリ秒

S

0 999

タイムゾーン

z

zzzz

JST

Japan Standard Time

年における週

w

1月第1週からの週

月における週

W

当月の第何週か

年における日

D

11日からの日数

月における曜日

F

当月の何回目の曜日か

 

 

 

 

一度覚えてしまえば、他にも色々と使い所があるかもしれない。

 


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。