日期处理-日期星期之间的转换

目的:在项目中遇到一个小的需求:

1.将日期转换为每年的第多少个星期
2.通过每年的第几个星期和属于周几,获取日期.

具体的实现方式:

方式一:通过Calendar 类来实现

话不多说,直接上测试代码:

    public class TimeTest {
    
		@Test
	    //计算日期属于第几周
	    public void getDayOfYway() throws ParseException {
	        String adate="2019年8月29日";//周四
	        Calendar cal = Calendar.getInstance();
	        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
	        cal.setTime(format.parse(adate));
	        int week = cal.get(Calendar.WEEK_OF_YEAR);
	        System.out.println(week);//35
	    }
}

今天写的博客,就用今天的日期测试一下,今天是2019年8月29日,周四
通过上面的代码我们可以计算出 它属于一年中的第35周.

下面我们再用上面获取的日期进行反面测试一下.
就是说我们已经知道属于一年中的第35个星期,知道是周四,想获取日期:

@Test
//通过一年中的第几周和周几,获取日期
public void translatedata() {
    int weekodyear = 35;
    int week = 4;
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2019); // 2019
    cal.set(Calendar.WEEK_OF_YEAR, weekodyear);
    cal.set(Calendar.DAY_OF_WEEK, week); // 1表示周日,2表示周一,7表示周六
    Date date = cal.getTime();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    String dateString = formatter.format(date);
    System.out.println(dateString);
}

输出的日期就是今天的日期.

方式二:通过joda-time 来实现

首先需要在pom.xml中引入下面的依赖

<dependency>
        <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.3</version>
</dependency> 
  @Test
  public void testDate() throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
         Date date = sdf.parse("2019/8/129");
         DateTime dt = new DateTime(date.getTime());
         System.out.println(dt.getWeekOfWeekyear());
         System.out.println(dt.getDayOfWeek());
         System.out.println(dt);
  }
	@Test
	public void tt1() {
		   final DateTime dt = new DateTime();
		   DateTime time = dt.withDayOfWeek(5).withWeekOfWeekyear(35);
		   System.out.println(time);
	}	

希望可以帮助有需要的人.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值