Applescript“无法将“2023 年 4 月 1 日星期六 16:05:41”输入日期类型。”

问题描述 投票:0回答:2

信不信由你,我已经用谷歌搜索了这个简单的东西,但在任何地方都找不到。我有一个日期格式为“YYYY-MM-DD”的字符串,但我是从 shell 脚本生成的,所以它可以是任何内容。 然而,Applescript 似乎只接受一种非常具体的字符串格式,我无法猜测也找不到相关文档。我已经尝试了所有我能想到的格式。令人震惊的是,我什至无法让这段代码工作,它采用 Applescript 自己的格式并将其反馈回去:

set theDate to (current date) as string
set tDate to theDate as date

于是 applescript 发出错误“无法将“2023 年 4 月 1 日星期六 14:49:59”输入日期类型。” 这怎么可能?谁能告诉我魔术格式? 我知道这可能取决于我的系统设置,但我如何找到我现在的设置并为脚本提供正确的字符串?
谢谢!

如果我查看 Applescript 字典,它提供了一个非描述性的答案。只是说“在构建日期时,您可以使用任何可以解释为日期、时间或日期时间的字符串值。”请举个例子?

string datetime applescript
2个回答
0
投票

你不能强制字符串到

date
,但你可以用这种方式从字符串创建日期

set theDate to (current date) as string
set tDate to date theDate

0
投票

相关话题已经咀嚼了很多遍了。我将重复针对“YYYY-MM-DD”案例的具体工作方式。

你问错了。关键是你需要按照你的语言环境中的顺序放置“YYYY-MM-DD”的顺序。在不同的地区,年、月、日的顺序是不同的,通常不会是“YYYY-MM-DD”。

AppleScript 无法通过强制自动猜出正确的顺序。这是行不通的。而且,这是出乎意料的。例如,AppleScript 如何猜测成对的日期和月份(“11”、“05”)?没办法。

因此,您必须 通过编写正确的转换(作为处理程序更好)来明确指定顺序。

myShellStringDateToAppleScriptDate("2024-11-05") -- string's order is not localized: YYYY-MM-DD

on myShellStringDateToAppleScriptDate(shellDate)
    set AppleScriptDate to (current date) -- creates new date object with localized order
    tell AppleScriptDate -- put the order of "YYYY-MM-DD" in accordance with the order in your locale
        set year to text 1 thru 4 of shellDate
        set its month to text 6 thru 7 of shellDate
        set day to text 9 thru 10 of shellDate
    end tell
    return AppleScriptDate
end myShellStringDateToAppleScriptDate
© www.soinside.com 2019 - 2024. All rights reserved.