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

指定日における年齢を計算する_v2

Posted on 10月 19 by Takaaki Naganoya

指定日における誕生日を計算するAppleScriptの修正版です。

macOS 27で前バージョンがうまく動いていなかったので、ChatGPTにチェックしてもらったところ、Time Zoneが合っていないという指摘があったので、修正してみました。

割とCocoa Scriptingに手を出した直後あたりで試行錯誤していた時代に、「正しくはないが、API側が気を利かせて動いていた」というものをいくつか見つけたので、アップデートしておく必要性を感じます。

AppleScript名:指定日における年齢を計算する_v2.scpt
—
— Created 2015-09-10 by Takaaki Naganoya
— Revised 2026-10-19
— Piyomaru Software
—

use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

— 誕生日(日本時間)
set aBirthday to "2000-08-08 12:00:00"
set anAge to getAgeFromBirthdayAndSpecifiedDay(aBirthday, 2026, 10, 19, "Asia/Tokyo") of me
–> 26

–誕生日を求める(生年月日(ISO)
on getAgeFromBirthdayAndSpecifiedDay(aBDStr as string, tYear as integer, tMonth as integer, tDay as integer, tTz as string)
  
  
— 年齢を求める基準日時(日本時間)
  
set targetDate to getDateInternational(tYear, tMonth, tDay, 23, 59, 59, tTz) of me
  
  
— 日時文字列をNSDateに変換
  
set aFormatter to current application’s NSDateFormatter’s alloc()’s init()
  
aFormatter’s setLocale:(current application’s NSLocale’s localeWithLocaleIdentifier:"en_US_POSIX")
  
aFormatter’s setCalendar:(current application’s NSCalendar’s calendarWithIdentifier:(current application’s NSCalendarIdentifierGregorian))
  
aFormatter’s setDateFormat:"yyyy-MM-dd HH:mm:ss"
  
aFormatter’s setTimeZone:(current application’s NSTimeZone’s timeZoneWithName:tTz)
  
  
set aBirthdayDate to aFormatter’s dateFromString:aBDStr
  
  
if aBirthdayDate is missing value then
    error "Birthday format error"
  end if
  
  
— 年齢計算用のカレンダー
  
set aCalendar to current application’s NSCalendar’s calendarWithIdentifier:(current application’s NSCalendarIdentifierGregorian)
  
aCalendar’s setTimeZone:(current application’s NSTimeZone’s timeZoneWithName:tTz)
  
  
— 誕生日から基準日時までの暦上の年数を計算
  
set ageComponents to aCalendar’s components:(current application’s NSCalendarUnitYear) fromDate:aBirthdayDate toDate:targetDate options:0
  
  
set myAge to (ageComponents’s |year|()) as integer
  
  
return myAge
end getAgeFromBirthdayAndSpecifiedDay

— 指定したタイムゾーンでNSDateを生成
on getDateInternational(aYear, aMonth, aDay, anHour, aMinute, aSecond, timeZoneName)
  set aCalendar to current application’s NSCalendar’s calendarWithIdentifier:(current application’s NSCalendarIdentifierGregorian)
  
aCalendar’s setTimeZone:(current application’s NSTimeZone’s timeZoneWithName:timeZoneName)
  
  
set theDate to aCalendar’s dateWithEra:1 |year|:aYear |month|:aMonth |day|:aDay hour:anHour minute:aMinute |second|:aSecond nanosecond:0
  
return theDate
end getDateInternational

★Click Here to Open This Script 

(Visited 1 times, 1 visits today)
Posted in date | Tagged 26.0savvy 27.0savvy | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

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

Google Search

Popular posts

  • Apple Creator Studioに含まれるKeynote/Pages/Numbersは新バージョン?
  • 最初期に書かれた書籍「AppleScript道入門」の序文をいま振り返る
  • 簡易カラーチャート画像の出力 v2.1
  • 指定フォルダ内から指定拡張子のファイルを取得し、エイリアスだったらオリジナルのパスをPOSIX pathで取得
  • ASCII ART QR Encoder
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • MacBook Air/MacBook Proのディスプレイ開閉角度を取得
  • 「AppleScriptセキュリティ実践ガイド」を発売
  • 各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を
  • Keynote->Keynote Creator Studio(以下同様)
  • Finder上で選択中のHEIC画像から位置情報を削除_v5
  • 翻訳テスト
  • FSFindFolder failed with error=-43
  • YouTubeムービー再生実験
  • 2025年に書いた価値あるAppleScript
  • 関数計算ライブラリで一部のユーザーから再現しない問題が報告される件
  • ワークスペース切り替えv2.1
  • YouTubeムービー再生実験 v2c
  • macOS 26.xのSystem Events/Screen Saver preferencesにバグ
  • macOS 26.1が登場。Finderのバグが直らない?

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (440) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (173) 26.0savvy (53) CotEditor (68) Finder (53) Keynote (123) 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 (80) Pages (58) Safari (45) Script Editor (28) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • Apple Inteligence
  • 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
  • Newt On Project
  • NFC
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • 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
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spaces
  • Spellchecker
  • Spotlight
  • SVG
  • Swift
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2026年10月
  • 2026年9月
  • 2026年8月
  • 2026年7月
  • 2026年6月
  • 2026年5月
  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 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