当前位置: 首页 > 面试题库 >

如何在其他语言环境中strftime日期对象?

黄毅
2023-03-14
问题内容

我在python中有一个date对象,我需要使用%a(工作日)和%b(月)代码在C语言环境中为旧版系统生成一个时间戳。但是,我不希望更改应用程序的语言环境,因为其他部分需要尊重用户的当前语言环境。有没有一种方法可以使用特定语言环境来调用strftime()?


问题答案:

Rob给出的示例很好,但不是线程安全的。这是与线程一起使用的版本:

import locale
import threading

from datetime import datetime
from contextlib import contextmanager


LOCALE_LOCK = threading.Lock()

@contextmanager
def setlocale(name):
    with LOCALE_LOCK:
        saved = locale.setlocale(locale.LC_ALL)
        try:
            yield locale.setlocale(locale.LC_ALL, name)
        finally:
            locale.setlocale(locale.LC_ALL, saved)

# Let's set a non-US locale
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')

# Example to write a formatted English date
with setlocale('C'):
    print(datetime.now().strftime('%a, %b')) # e.g. => "Thu, Jun"

# Example to read a formatted English date
with setlocale('C'):
    mydate = datetime.strptime('Thu, Jun', '%a, %b')

它使用全局锁创建线程安全上下文管理器,并允许您使用LOCALE_LOCK使多个线程运行与语言环境相关的代码。它还处理yield语句中的异常,以确保始终还原原始语言环境。



 类似资料:
  • 问题内容: 我有来自服务器的日期,格式为“ 2013-01-20T16:48:43”,我的应用程序同时支持阿拉伯语和英语语言环境。但是,当我将语言环境更改为阿拉伯语时,日期无法解析,因此无法解析。到现在为止我写的是 问题答案: 不要将您的日期解析为阿拉伯语,除了按如下方式尝试通过仅设置“英语区域设置”之外,它还会给您带来错误提示。

  • 问题内容: 我在指定语言代码的应用程序中读取了一个文件: 必须采用以下格式:例如 en_UK,en_US等。是否可以在继续之前验证语言环境字符串是否有效? 问题答案: 现在我要做: 效果很好。

  • 在我的应用程序中,用户应该能够切换区域设置(用于在页面上呈现文本的语言)。大量教程使用FacesContext.get货币实例()。getViewRoot()。setLocale()。例如:http://www.mkyong.com/jsf2/jsf-2-internationalization-example/.但是,这在JSF 2.0中根本不起作用(它在1.2中确实起作用)。这种语言从不切换。

  • 问题内容: 我经常使用类似模式创建SimpleDateFormat,或以与语言环境无关的方式输出日期。由于也有一个构造函数带有附加的语言环境参数,所以我想知道是否存在这种格式可以依赖于语言环境的情况,还是我应该始终指定Locale.ENGLISH或Locale.GERMANY。假设时区已明确设置。 问题答案: 刚刚在Locale上找到了静态方法,结果表明日历的所有字段都可以依赖于Locale: 在

  • 当使用缺乏原生Pact支持的语言来写服务提供者时,你仍然可以使用通用的Pact提供者端验证工具来验证是否满足契约。 通用Pact提供者验证 下面的设置简化了任何语言的Pact提供者端的验证过程。 特性: 验证发布到Pact Broker的Pact文件 在开发环境验证供测试用的本地Pact*.json文件 安装有Ruby环境以及sane的预先配置的Docker镜像,缺省为src / Rakefile

  • 问题内容: 我是Java和Android开发的新手,所以这可能是一个愚蠢的问题,但是我已经搜寻了好几天,却找不到解决方案: 我尝试根据用户的语言环境输出a 。 在StackOverflow上搜索使我想到了这一点: 输出: 在我的法语本地电话上。差不多了 我如何也输出 小时,分钟和秒部分 的,使用用户的语言环境?我一直在寻找android文档,但找不到任何东西。 非常感谢。 问题答案: 用 参考:h