Java:从日历中获取一周中的任意一天

Java:从日历中获取一周中的任意一天,java,calendar,Java,Calendar,使用日历我可以获得当天的周、年和所有详细信息。如何导航到该周的某一天 说,calendar.get(calendar.DAY/OF/u-WEEK)返回3,表示星期二。现在,我想说的是那个星期的星期五或者那个星期的其他任何一天。我该怎么做 谢谢你的回复。我想我需要把情况弄清楚。 基本上,我正在尝试在指定的时间段内禁用系统中的电子邮件警报。 我得到的价值观如下: disableStart=“星期五-19:00” disableEnd=“周日-19:00” 现在,我需要验证是否应该在特定时间发送电子邮

使用
日历
我可以获得当天的周、年和所有详细信息。如何导航到该周的某一天

说,
calendar.get(calendar.DAY/OF/u-WEEK)
返回3,表示星期二。现在,我想说的是那个星期的星期五或者那个星期的其他任何一天。我该怎么做

谢谢你的回复。我想我需要把情况弄清楚。 基本上,我正在尝试在指定的时间段内禁用系统中的电子邮件警报。 我得到的价值观如下: disableStart=“星期五-19:00” disableEnd=“周日-19:00”

现在,我需要验证是否应该在特定时间发送电子邮件。 e、 g.如果今天=周四,请随时发送电子邮件
但是,如果今天=星期六,任何时间都不能按照上述值发送。

如果我理解正确,您可以使用Calendar.set(Field,value)方法

产生输出

6
08-10-2010
3
05-10-2010
cal.set(Calendar.DAY\u OF_WEEK,Calendar.FRIDAY)

给出:

Today:  Fri Oct 08 15:45:14 CEST 2010
MONDAY: Mon Oct 04 15:45:14 CEST 2010
TUESDAY: Tue Oct 05 15:45:14 CEST 2010
WEDNESDAY: Wed Oct 06 15:45:14 CEST 2010
THURSDAY: Thu Oct 07 15:45:14 CEST 2010
FRIDAY: Fri Oct 08 15:45:14 CEST 2010
SATURDAY: Sat Oct 09 15:45:14 CEST 2010
SUNDAY: Sun Oct 10 15:45:14 CEST 2010

这意味着,至少在我的系统中,每周从周一开始。

感谢凯文和莫里斯的回答。他们真的给了我一个起点

我以这个测试代码结束,以防它对任何人都有帮助

private static Date getTimeForAnyDayInWeek(int nDay, int nHour, int nMin)
{
    Calendar c = Calendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    Date date = Calendar.getInstance().getTime();
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK, nDay);
    c.set(Calendar.HOUR_OF_DAY, nHour);
    c.set(Calendar.MINUTE, nMin);
    return c.getTime();
}

public static void main(String[] args)
{
    Date start = getTimeForAnyDayInWeek(6, 19, 00);
    Date end = getTimeForAnyDayInWeek(8, 19, 00);
    Date c = new Date();

    if (start.before(c) && c.before(end))
        System.out.println("BLOCK");
    else
        System.out.println("SEND");
}
谢谢,
Anubhav

这是一个完美的例子,说明了为什么它这么好,下面是我的类似代码

  DateTime dt = new DateTime(); //current datetime, jodatime format
  DateTime fridayLastWeek = dt.minusWeeks(1).dayOfWeek().setCopy("Friday");
  Date convertedtorubbishdateformat = fridayLastWeek.toDate();

我过去常常在标准的java日期/日历上浪费很多时间。然后我得到了jodatime,你不会后悔的,它显然将在将来作为标准java的一部分使用。我没有;不要费心把罐子拆了很久,我希望我已经这么做了,你不会后悔的。

检查DateFormat API。也许会有帮助。不确定。可能是重复的。我不太了解功能要求。导航到一天?嗯?乔达时代:编辑后加入了一个简单的格式来显示一周中某一天的变化。谢谢莫里斯,这正是我想要的。
private static Date getTimeForAnyDayInWeek(int nDay, int nHour, int nMin)
{
    Calendar c = Calendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    Date date = Calendar.getInstance().getTime();
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK, nDay);
    c.set(Calendar.HOUR_OF_DAY, nHour);
    c.set(Calendar.MINUTE, nMin);
    return c.getTime();
}

public static void main(String[] args)
{
    Date start = getTimeForAnyDayInWeek(6, 19, 00);
    Date end = getTimeForAnyDayInWeek(8, 19, 00);
    Date c = new Date();

    if (start.before(c) && c.before(end))
        System.out.println("BLOCK");
    else
        System.out.println("SEND");
}
  DateTime dt = new DateTime(); //current datetime, jodatime format
  DateTime fridayLastWeek = dt.minusWeeks(1).dayOfWeek().setCopy("Friday");
  Date convertedtorubbishdateformat = fridayLastWeek.toDate();