【问题标题】:override first day of the week in joda?在joda中覆盖一周的第一天?
【发布时间】:2012-11-16 03:04:57
【问题描述】:

是否可以将 Joda 周的第一天改写为 星期日 ?因为 Joda 使用 Monday 作为一周的第一天。 如果有办法,任何人都可以解释一下。

我在 SOF 中提到了以下主题

Joda Time: First day of week?

谢谢

【问题讨论】:

    标签: java android date datetime jodatime


    【解决方案1】:

    没有。

    首先,将一周的第一天覆盖到星期日将需要覆盖所有其他工作日。但是这些最终常量是在DateTimeConstants 类中定义的,无法覆盖。但是您无论如何都不想覆盖这些值,因为它会破坏 joda-time 的 ISO 合规性。

    同时我想知道你为什么要首先覆盖它?你能提供一个用例吗?

    public static DateTime getUSFirstDayOfWeek(DateTime dateTime) {
        return dateTime.withDayOfWeek(DateTimeConstants.MONDAY).minusDays(1);
    }
    

    这个简单的辅助方法可能会完成这项工作。请注意,我没有使用SUNDAY,因为它会在未来,即——按照美国的概念——已经是下周了。

    【讨论】:

    • 用例:2006-12-31 的周数是多少——1 或 52?更通用的用例:绘制一个包含两个系列的图表:1:我们当年的每周收入,2:去年的每周收入,以比较数据。对于美国用户,周必须从周日开始。这在许多行业都很常见。
    • "...因为它会破坏 joda-time 的 ISO 合规性。"但它支持自定义 minDaysInFirstWeek,这不是“破坏 ISO 合规性”吗?
    • ReadableDateTime#getWeekOfWeekyear(),但这对你来说可能是错误的,因为它使用星期一作为第一天。我认为您不会为您的应用程序实施一个“正确”的替代方法来替代该方法。关于 ISO 合规性混乱:shure,JodaTime 支持大量自定义内容以将其全部搞砸——例如完成不同的年表——但我会尽量避免这种情况,因为它可能会在结合使用时产生损坏的结果您使用 joda 时间的其他要点。
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 2011-06-13
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多