当前位置: 首页 > 知识库问答 >
问题:

如何使用自定义的一周的第一天构建区域设置?

柴英光
2023-03-14

我需要有一个Locale对象,它与另一个对象完全相同,但具有不同的一周第一天(即:周日而不是周六)。

具体来说,我需要一个周日开始的阿拉伯埃及地区。我使用的日历控件只支持更改其区域设置,因此我需要它。

共有2个答案

谭毅然
2023-03-14

您可以创建一个日历对象,并使用日历设置第一天。setFirstDayOfWeek()方法。

Locale locale = new Locale("ar-EG", "EG");
TimeZone timeZone = TimeZone.getTimeZone("Egypt");
Calendar calendar = GregorianCalendar.getInstance(locale);
Calendar calendar2 = GregorianCalendar.getInstance(locale);
calendar2.setFirstDayOfWeek(0);
System.out.println("Calender locale: " + locale + "\nTimeZone: "
        + timeZone.getDisplayName(locale) + "FirstDayOfTheWeek:"
        + calendar.getFirstDayOfWeek() + "\nCalender2 locale: "
        + locale + "\nTimeZone: " + timeZone.getDisplayName(locale)
        + "FirstDayOfTheWeek:" + calendar2.getFirstDayOfWeek());
连翰
2023-03-14

Locale对象不控制一周的第一天。这是由日历类通过以下方式完成的:

Locale locale = Locale.forLanguageTag("ar-EG");
Calendar calendar = Calendar.getInstance(locale);
calendar.setFirstDayOfWeek(Calendar.SUNDAY);

根据你对乔塔姆·何塞回答的评论:

通常这会很好。问题是,我使用的控件继续根据默认语言环境(应用程序范围明智)实例化Calendar对象,因此是自定义语言环境。我实际上尝试了对控件进行逆向工程,由于它使用私有成员,它没有提供解决问题的余地(即:继承它在这里没有帮助)

如果直接使用Java反射API更改这些private成员,则无需继承。

首先,检查控件的类以找到Calendar字段:

public class CalendarControl {
    private Calendar calendar;
}

现在使用:

CalendarControl control; // The instance to manipulate
try {
    Field field = control.getClass().getDeclaredField("calendar");
    field.setAccessible(true);
    field.set(control, calendar); // Pass the new object we created at top of this answer
} catch (Exception ex) {
    // You must catch NoSuchFieldException and IllegalAccessException here
}
 类似资料:
  • 如何将一周的第一天设置为周一或周六? 我找不到方法或变量来更改它。如下图所示,一周的第一天是星期一。提前谢谢。 链接github DateRangePickerhttps://github.com/savvisingh/DateRangePicker 谢谢你的答案。我终于明白了。您需要初始化区域设置和时区以更改一周的第一天。不是您必须更改的日历。也不需要破坏库代码。

  • 如何分类?例如,我希望一周的第一天是星期一。由此: 周一至周二周三至周五周六 我想要这个: 星期一至星期二星期三星期五星期六至星期日 或者我希望我一周的第一天是周五 那么在输出中应该是这样的: 星期五星期六星期一星期二星期三星期四

  • 问题内容: 我有对象 我需要获得本周的第一天和最后一天。我需要将星期日和星期一的两种变体作为一周的开始和结束日期。我现在对代码有点困惑。你能帮我吗? 问题答案: 这适用于本周的第一天=本周的星期天,最后一天=本周的星期六。将其延长到周一至周日是微不足道的。 用户可以练习如何在不同月份的第一天和最后一天工作

  • 我看到的所有日历视图库和基于日历的日期选择器的示例都使用旧的日历API。然而,我还没有找到任何使用Java8日期API构建日历视图的方法。这是我试图实现的目标,基本上已经做到了,但我遇到的问题是使用区域设置设置一周的第一天。 我已经设法获取并显示了给定月份一周中每一天的所有日期。但是,我遇到的问题是生成的日历不会从基于我的语言环境的一周的第一天开始。Java. Time使用的DayOfWeeken

  • 问题内容: 我目前正在使用vbscript函数以2/12/2009格式获取本周和上周的第一天值。我想知道是否可以使用SQL查询。 问题答案: 这些语句应该在TSQL中完成您想要的操作。请注意,这些报表基于当前日期。您可以将getdate()替换为所需的任何日期:

  • 我正在用cakephp开发一个用户库,用于我的应用程序中的翻译操作。我想创造。po文件在Lib目录中,这就是为什么我在Lib目录中创建Locale文件夹,并在相应的语言目录中创建po文件。但问题是CakePHP在默认情况下是在其默认区域设置位置搜索po文件的。现在我的语言环境目录在Lib文件夹中。 我怎么能让cakephp搜索po文件在我自己的区域设置目录这是在Lib文件夹? 这是我的翻译课程代码