OS X上的Python:获取本地日期时间模式

OS X上的Python:获取本地日期时间模式,python,macos,Python,Macos,是否有人设法在OSX上使用locale来派生默认的本地日期和时间格式?(我需要在各种地区解析简单的日期和时间) 目前,我正在使用osascript from subprocess import Popen, PIPE cmd = "osascript -e " + """' tell (current date) set {its year, its month, its day} to {2001, 2, 3} set {its hours, its

是否有人设法在OSX上使用locale来派生默认的本地日期和时间格式?(我需要在各种地区解析简单的日期和时间)

目前,我正在使用osascript

from subprocess import Popen, PIPE

cmd = "osascript -e " + """'
    tell (current date)
        set {its year, its month, its day} to {2001, 2, 3}
        set {its hours, its minutes, its seconds} to {4, 5, 6}
        return its short date string & tab & its time string
    end tell'"""

str_date, err_num = Popen(cmd, shell=True, \
    stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()

str_date, _, str_time = str_date.rpartition('   ')
str_date_pattern = str_date.replace('2001', '%Y').replace('02', '%m').replace('03','%d')
str_time_pattern = str_time.replace('04', '%H').replace('05', '%M').replace('06', '%S').rstrip()
返回类似于:

'%d/%m/%Y', '%H:%M:%S'
为什么不改用这个呢

它可以处理大多数格式,而无需配置格式:

>>> from dateutil.parser import parse
>>> parse('03/02/2001 04:05:06')
datetime.datetime(2001, 3, 2, 4, 5, 6)
或者,您可以尝试通过
defaults read
命令翻译可用的:

$ defaults read .GlobalPreferences AppleICUDateFormatStrings
{
    1 = "yyyy/M/d";
}
$ defaults read .GlobalPreferences AppleICUTimeFormatStrings
{
    1 = "kk:mm ";
    2 = "kk:mm:ss ";
    3 = "kk:mm:ss  z";
    4 = "kk:mm:ss  v";
}

这些是通过
语言和文本
配置面板配置的区域设置。

谢谢!dateutil看起来是最优的,但为了便于分发,我试图保留默认库。默认读取是一个好主意(我猜通过shell读取日期%x等的变体也比osascript简单)。奇怪的是,默认读取的管道输出。通过grep的GlobalPreferences在这个(10.7.5)系统上没有显示日期或时间格式字符串,尽管区域设置字符串在那里。@houthakker:确保您执行不区分大小写的grep(
-i
):-P我自己使用10.7.5,并使用grep查找这些字符串。是的,我采取了预防措施:-)但是在这个系统上,唯一包含日期或时间的大小写变量的字符串是:NSNavModDateFileProperty,modDate加上厘米和DefaultTimeZoneNames(通过对整个plist的目视检查确认)与多种语言的使用有关?键入:在bash:date“++%x++%x”中