Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

OS X 10.8のdateに強烈なバグ

# 2018/1の事故で消失した記事を元のまま復旧させたものです

10.8になって、「自然言語による相対日付指定v13」などの高度な処理を行うカレンダー計算プログラムが正しい値を返さなくなったことに気付いていたのですが、これがあまりに巨大なプログラムなので、問題の所在がどこにあるのか調査できずにいました。

確認してみたところ、どうやらOS X 10.8のdate文に強烈なバグが存在していることが分りました。確認はOS X 10.8.3(Build 12D78)にて行っています。

スクリプト名:10.8のdateバグ
set a to “2013年2月1日金曜日 0:00:00”
set b to date a
–> date “1999年12月31日金曜日 0:00:00”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

date文で曜日が書かれた日付テキストをdateオブジェクトに変換すると、すべて「1999年12月31日金曜日 0:00:00」になってしまうというものです。

さらに、AppleScriptエディタ上でdate文のあとにダイレクトに日付文字列を書いて指定し、コンパイル(構文確認)を行うとあからさまに1999年12月の日付に変わってしまいます。

ase11.png
▲文字入力中。このあと、コンパイル(構文確認)を実行すると……

ase21.png
▲1999年12月の日付に勝手に書き換えられてしまう!

念のため、手元のMac OS X 10.6.8および10.7.5の環境で同様の内容をテストしてみましたが、これらの環境では問題は発生していません。

問題の回避策は、

 (1)dateに与える日付文字列に曜日を含めないこと
 (2)current dateでdateオブジェクトを作成しておいて、そのyear, month, dayなどのプロパティを個別に設定して返すサブルーチンを用いること
 (3)dateに与える日付文字列に日本語の文字列を含めないこと
 (4)曜日の文字列だけ英語で書くこと

などが考えられます。

スクリプト名:10.8のバグの一時的な回避策1
set a to “2013年2月1日” –曜日を含めない
set b to date a
–> date “2013年2月1日金曜日 0:00:00”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

スクリプト名:10.8のバグの一時的な回避策2
set aDate to makeDateObj(2013, 2, 1, 0) of me
–> date “2013年2月1日金曜日 0:00:00”

on makeDateObj(aYear, aMonth, aDay, aTimeNum)
  set a to current date
  
set year of a to (aYear as number)
  
set month of a to (aMonth as number)
  
set day of a to (aDay as number)
  
set time of a to aTimeNum
  
return a
end makeDateObj

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

スクリプト名:10.8のバグの一時的な回避策3
set a to “2013/2/1 0:00:00” –日本語の日付文字列を渡さない
set b to date a
–> date “2013年2月1日金曜日 0:00:00”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

スクリプト名:10.8のバグの一時的な回避策4
set a to “2013年2月15日Friday” –曜日だけ英語で書く
set b to date a
–> date “2013年2月15日金曜日 0:00:00”

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

「OS X 10.8のdateに強烈なバグ」の話の続報です。

OS X 10.8になって正常に動作しなくなった「自然言語による相対日付指定v13」サブルーチンの調査中に出くわした不具合点とその回避方法について解説します。

結論からいえば、date文のトリッキーな記述を行っていた箇所があり、そこが問題になっていました。素直に書くようにすれば、機能を回復できます。

他のCJK言語環境(中国語や韓国語)においても問題が発生するのか興味深いところです。

スクリプト名:10.8でdate文のトリッキーな記述を回避する
–10.8で問題になる書き方
set tmp4 to "2013/2/1"
set ret2Date to date "0:0:0" of (date tmp4)
–> date "1999年12月31日金曜日 0:00:00"

–10.8で問題にならない書き方
set tmp4 to "2013/2/1"
set ret2Date to date (tmp4 & " 0:0:0")
–> date "2013年2月1日金曜日 0:00:00"

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

(Visited 76 times, 1 visits today)

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • macOS 15, Sequoia
  • 指定のWordファイルをPDFに書き出す
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • Numbersで選択範囲のセルの前後の空白を削除
  • メキシカンハットの描画
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • AppleScriptによる並列処理
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • Cocoa Scripting Course 続刊計画
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • AppleScript入門③AppleScriptを使った「自動化」とは?
  • macOS 15でも変化したText to Speech環境
  • Keynote/Pagesで選択中の表カラムの幅を均等割
  • デフォルトインストールされたフォント名を取得するAppleScript
  • macOS 15 リモートApple Eventsにバグ?
  • AppleScript入門① AppleScriptってなんだろう?
  • macOS 14で変更になったOSバージョン取得APIの返り値
  • Keynoteで2階層のスライドのタイトルをまとめてテキスト化

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (194) 14.0savvy (147) 15.0savvy (132) CotEditor (66) Finder (51) iTunes (19) Keynote (117) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (55) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC