为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8 Date API-获取月份中一天的序数位置

Java 8 Date API-获取月份中一天的序数位置

LEATH 2021-04-04 12:13:00
我需要一个函数来返回月份中给定日期的顺序位置,例如:01/01/1970 = 1, 因为它是1970年1月的第一个星期四02/01/1970 = 1, 因为它是1970年1月的第一个星期五19/01/1970 = 3, 因为这是1970年1月的第三个星期一1970年1月31日= 5, 因为这是1970年1月的第五个星期六我尝试了什么?-没什么...我什至不知道从哪里开始;Java 8日期/时间API对我来说还很新。理想情况下,我想要具有此签名的函数:public int getOrdinalPosition(TemporalAccessor temporal) {    ...}
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

好吧,以19/01/1970为例。从中减去7天,仍然是一月。再次减去7天,..仍在一月。第4次减去7天,..哦,它不再是一月了。您第四次删除7天,它不再是正确的月份。

这就是您所需要的。

相关方法:for循环,计数器和..minusDays(7)方法,以及getMonth()


查看完整回答
反对 回复 2021-04-14
?
慕仙森

TA贡献1827条经验 获得超8个赞

ChronoField.ALIGNED_WEEK_OF_MONTH

您可以使用LocalDate.get()和ChronoField.ALIGNED_WEEK_OF_MONTH。


import java.time.LocalDate;

import java.time.temporal.ChronoField;

import java.time.temporal.TemporalAccessor;


/**

 *

 * @author Sedrick

 */

public class JavaApplication19 {


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        // TODO code application logic here

        LocalDate localDate1 = LocalDate.of(1970, 01, 01);

        LocalDate localDate2 = LocalDate.of(1970, 02, 01);

        LocalDate localDate3 = LocalDate.of(1970, 01, 19);

        LocalDate localDate4 = LocalDate.of(1970, 01, 31);



        System.out.println(localDate1.get(ChronoField.ALIGNED_WEEK_OF_MONTH));

        System.out.println(localDate2.get(ChronoField.ALIGNED_WEEK_OF_MONTH));

        System.out.println(localDate3.get(ChronoField.ALIGNED_WEEK_OF_MONTH));

        System.out.println(localDate4.get(ChronoField.ALIGNED_WEEK_OF_MONTH));


        System.out.println(getOrdinalPosition(localDate4));

    }


    static public int getOrdinalPosition(TemporalAccessor temporal) {

        return LocalDate.from(temporal).get(ChronoField.ALIGNED_WEEK_OF_MONTH);

    }

}

输出:


run:

1

1

3

5

5

BUILD SUCCESSFUL (total time: 0 seconds)


查看完整回答
反对 回复 2021-04-14
?
米脂

TA贡献1836条经验 获得超3个赞

您需要的是 ChronoField.ALIGNED_WEEK_OF_MONTH


LocalDate.of(1970,1,1).get(ChronoField.ALIGNED_WEEK_OF_MONTH)      //1

LocalDate.of(1970,1,2).get(ChronoField.ALIGNED_WEEK_OF_MONTH)      //1

LocalDate.of(1970,1,19).get(ChronoField.ALIGNED_WEEK_OF_MONTH)     //3

LocalDate.of(1970,1,31).get(ChronoField.ALIGNED_WEEK_OF_MONTH)     //5


查看完整回答
反对 回复 2021-04-14
  • 3 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信