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

检索当前周的星期一日期

漆雕誉
2023-03-14
问题内容

我们有一个实用程序,它将在周一至周五之间的任何一天运行。它将在内容管理工具中更新一些文件。与该文件关联的最后修改日期应该是该周的星期一日期。我编写了以下程序来检索当前周的星期一日期。但是我仍然不确定这是否适用于所有情况。有谁有更好的解决方案?

Calendar c = Calendar.getInstance();
c.setTime(new Date());
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_WEEK));
int mondayNo = c.get(Calendar.DAY_OF_MONTH)-c.get(Calendar.DAY_OF_WEEK)+2;
c.set(Calendar.DAY_OF_MONTH,mondayNo);
System.out.println("Date "+c.getTime());

问题答案:

我强烈建议您改用Joda Time(对于您的所有日期/时间工作,而不仅限于此):

// TODO: Consider time zones, calendars etc
LocalDate now = new LocalDate();
LocalDate monday = now.withDayOfWeek(DateTimeConstants.MONDAY);
System.out.println(monday);

请注意,正如您在此处所使用的 星期一 (即Joda
Time中的一周的第一天)一样,它将始终返回更早的一天(或同一天)。例如,如果您选择了星期三,那么它将从星期一或星期二 前进
到星期三。如果需要“下一个星期三”或“上一个星期三”,则始终可以添加或减去一周。

编辑:如果您 确实 要使用java.util.Date/Calendar,则可以使用:

Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("Date " + c.getTime());

您可以使用Calendar.setFirstDayOfWeek指示一周是星期一至星期日还是星期天至星期六。我
相信 将星期几设置为当前星期-进行测试。



 类似资料:
  • 问题内容: 我已经实现了一种获取当前星期中星期一的日期的方法,并且已经将星期一指定为星期的第一天。 但是,无论我做什么,它都会返回2013年3月24日格林尼治标准时间。我看不到这里的问题。有人能帮忙吗? 问题答案: 试试这个 :

  • 问题内容: 我目前有此代码: 这是Date对象的扩展。 我需要做同样的事情,但是让日历返回我从星期一开始而不是星期日的一周中的几天。 问题答案: 您只需要使用iso8601日历获取一周中的第一天,其中第一个工作日为星期一,并添加0至6天。尝试这样:

  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。

  • 问题内容: 我正在使用 MySQL 查询建立每周报告。首先我得到周数 然后,我需要显示一周的开始日期(我所在地区的星期一)。仅使用 MySQL 怎么做? 谢谢! 问题答案: 如果您需要当前一周的星期一日期,请尝试以下操作: 它返回您当前星期的星期一日期。

  • 问题内容: 我想获取一个格式为“ YYYYMMdd”的日期(例如今天是20110627)作为当前一周的星期一。从明天到星期天,我仍然想打印星期一(今天)的日期。然后,下周,重复该过程 问题答案: 如果范围是您的目标,那么您可能需要做一些事情 将输出: 20110628-20110703 有关日期的更多信息 请注意,这仅适用于GNU日期 我读过: 可以通过替换sunfreeware.com版本的日期

  • 我的程序中有这5个按钮:星期一、星期二、星期三、星期四和星期五,它们在我的菜单屏幕上。我现在想要的是,当我的程序启动和我的菜单屏幕打开时,按钮包含的日子+一天的日期。 例如,今天我们是5月4日(星球大战快乐日!)按钮应该是这样的: 星期一04/30星期二05/01星期三05/02星期四05/03星期五05/04 但是当我打开下个星期一的菜单屏幕时,它应该是这样的:星期一05/07星期二05/08星