gpt4 book ai didi

java - 法语的本地化持续时间格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:56 24 4
gpt4 key购买 nike

Time4J's code example 的 Python 模拟是什么? :

// duration in seconds normalized to hours, minutes and seconds
Duration<?> dur = Duration.of(337540, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD);

// custom duration format => hh:mm:ss
String s1 = Duration.Formatter.ofPattern("hh:mm:ss").format(dur);
System.out.println(s1); // output: 93:45:40

// localized duration format for french
String s2 = PrettyTime.of(Locale.FRANCE).print(dur, TextWidth.WIDE);
System.out.println(s2); // output: 93 heures, 45 minutes et 40 secondes

很容易得到93:45:40:

#!/usr/bin/env python3
from datetime import timedelta

dur = timedelta(seconds=337540)
print(dur) # -> 3 days, 21:45:40
fields = {}
fields['hours'], seconds = divmod(dur // timedelta(seconds=1), 3600)
fields['minutes'], fields['seconds'] = divmod(seconds, 60)
print("%(hours)02d:%(minutes)02d:%(seconds)02d" % fields) # -> 93:45:40

但是我如何在 Python 中模拟 PrettyTime.of(Locale.FRANCE).print(dur, TextWidth.WIDE) Java 代码(不对单元进行硬编码)?

最佳答案

babel module允许接近所需的输出:

from babel.dates import format_timedelta # $ pip install babel

print(", ".join(format_timedelta(timedelta(**{unit: fields[unit]}),
granularity=unit.rstrip('s'),
threshold=fields[unit] + 1,
locale='fr')
for unit in "hours minutes seconds".split()))
# -> 93 heures, 45 minutes, 40 secondes

它自动处理语言环境和复数形式,例如,对于 dur = timedelta(seconds=1),它产生:

0 heure, 0 minute, 1 seconde

也许更好的解决方案是使用gettext 等标准工具手动翻译格式字符串。

关于java - 法语的本地化持续时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32116530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com