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

如何通过给出一个月中的一周和一周中的一天来获得日期

和谦
2023-03-14

如何通过给出一个月中的一周和一周中的一天来获得日期。

示例:如果我需要2018年11月的第三个星期二。

月周:3,周日:3

预计日期:2018年11月20日

但我们得到的价值是:2018年11月13日。因为本月的开始日(星期四)少于预期的日期(星期二)。

   Calendar calendar = Calendar.getInstance();  
   calendar.set(Calendar.YEAR,2018 );  
   calendar.set(Calendar.MONTH, 10);  
   calendar.set(Calendar.WEEK_OF_MONTH, 3);  
   calendar.set(Calendar.DAY_OF_WEEK, 3);  
   System.out.println("Time " + calendar.getTime());

我怎样才能得到正确的日期??

共有3个答案

桂飞翼
2023-03-14

如果你想使用日历,那么:

int year = 2018;
int month = 10;  // zero based November

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
calendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
System.out.println(calendar.getTime());
陈飞
2023-03-14

您可以使用以下代码:

LocalDate.now().with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.TUESDAY));

这将输出:

2018-11-20

更多信息可以在这里的java文档中找到

阚允晨
2023-03-14

如果您使用的是Java 8,您可以这样做,

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class Main {
    public static void main(String[] args) {
        LocalDate input = LocalDate.now();
        int ordinal = 3;
        DayOfWeek weekday = DayOfWeek.THURSDAY;
        TemporalAdjuster ta = TemporalAdjusters.dayOfWeekInMonth(ordinal, weekday) ;
        LocalDate adjusted = input.with( ta );
        System.out.println(adjusted.toString());
    }

}

我从这里开始,在给定的链接中有更多的方法可以做到这一点。

 类似资料:
  • 我有一个课堂作业: 该类应该有计算两个日期之间天数的方法,返回一周中的哪一天,并给出给定日期的黄道带符号。 这是我写的代码: > 当我用YYY\MM\DD初始化<code>日期时,在检查周日以获取近期日期时,一切都很完美,但当我输入出生日期(1991\11\14)时,它返回到星期三,但我出生在星期四。 当我试图获取day和mont来检查黄道十二宫时,它完全崩溃了,当我输入11时返回0(对于mont

  • 我正在尝试为我们的财务部门生成一些代码,他们需要一个字段,该字段将为他们提供一年中的当前一周,但以星期天为基础,这是一周的第一天。例如01-25-16(MM dd yyyy)将是第4周。然而,当我尝试使用和

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

  • 问题内容: 指定日期时: 我怎么知道这是每月的第三周? 如果我要这个约会怎么办? 我知道如果给定的日期是in年(双性恋),则只有2月有4周 问题答案:

  • 问题内容: 假设我有2011年1月3日,我想在一周的第一天,也就是星期天,那是2011年1月2日,我该怎么做? 原因是我有此查询: 是的,我意识到起源拼写错误,但是在此之前我就在这里,因此由于太多内部应用程序引用了它,因此我无法对其进行更正。 因此,我按周分组,但我希望以此填充我的图表,所以我不能让所有的周初看起来都像不同的日期。我该如何解决? 问题答案: 如果您需要处理从星期一开始的几周,也可以

  • 问题内容: 我想在下一个(例如)星期一的日期/时间创建的实例。 Java Time API中是否有任何方法,还是应该计算当前日期和目标日期之间有多少天,然后使用LocalDateTime.of()方法? 问题答案: 无需手动进行任何计算。 您可以使用方法通过调节器来调节给定的日期。一周的第二天有内置的调节器: 返回下一个星期几调整器,它将日期调整为在调整日期之后指定的星期几中的第一个匹配项。 该代