【问题标题】:Python: date from plaintext (foreign language) weekdayPython:来自明文(外语)工作日的日期
【发布时间】:2017-10-31 13:59:21
【问题描述】:

我正在寻找包含在字符串中的工作日的下一个可能日期。复杂性在于这个工作日将使用外语(sv_SE)。

在 bash 中,我可以使用 `dateround´ 解决这个问题:

startdate=$(dateround --from-locale=sv_SE -z CET today $startday)

非常感谢您就如何在 Python 中解决此问题提供指导。

非常感谢!

【问题讨论】:

  • 您能提供该语言的示例日期吗?
  • "Onsdag" 例如,但下面的 4d11s 回答解决了我的问题

标签: python date weekday


【解决方案1】:

Dateparser 支持不少languages。您可以将工作日解析为日期时间对象,然后确定下一个可能的可用日期。

-- 编辑--

 from dateparser import parse

 parse('Onsdag').isoweekday()  # 3

现在您有了 iso 工作日,您可以找到下一个可能的日期。具体方法可以参考this

【讨论】:

    【解决方案2】:

    似乎locale 别名是特定于平台且区分大小写的。我有窗户。所以语言环境将是sv_SE

    您可以使用babel 进行日期/时间转换,比原生locale 模块更全面。

    Babel 是一个集成的实用程序集合,可帮助对 Python 应用程序进行国际化和本地化,重点是基于 Web 的应用程序。

    可以安装为:
    pip install Babel

    安装后,我们可以使用format_dateformat_datetimeformat_time 实用程序将一种语言的日期、时间格式化为另一种语言。

    您可以使用这些实用程序在英语和瑞典语之间转换日期/时间数据。

    >>>import datetime
    >>>from babel.dates import format_date, format_datetime, format_time
    
    #Here we get current date time in an datetime object
    >>> now = datetime.datetime.now()
    >>> now
    datetime.datetime(2017, 10, 31, 9, 46, 32, 650000)
    
    #We format datetime object to english using babel
    >>> format_date(now, locale='en')
    u'Oct 31, 2017'
    
    #We format datetime object to sweedish using babel
    >>> format_date(now, locale='sv_SE')
    u'31 okt. 2017'
    >>> 
    

    【讨论】:

    • babel 很棒,但与我描述的问题相反。我需要先构建一个日期对象,4d11 用他的答案解决了这个对象。
    猜你喜欢
    • 2010-09-15
    • 2021-01-16
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多