Calender类

需求说明:
(1)获取当前时间,使用SimpleDateFormat以“年-月-日”方式显示
(2)计算2015年4月6日是一年中的第几个星期。

在这里插入图片描述

一、Java Calender的简单介绍

1、Java Calendar 是时间操作类,Calendar 抽象类定义了足够的方法,在某一特定的瞬间或日历上,提供年、月、日、小时之间的转换提供方法。
2、 Calendar.DAY_OF_WEEK 定义和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7

二、Calendar类获取月份时要加1而获取星期几却要减1的原因

1、在获取月份时,Calendar.MONTH + 1 的原因
这是因为Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。也可以使用数组的思想来理解:Calendar 的 month 下标是从 0 开始,也就是全年 12 个月是由 0 ~ 11 来表示。
2、在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK表示的是:一周中的第几天,因此受到第一天是星期几的影响。
但有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,所以当我们在编写代码时,要按照实际情况来考虑这2种情况。
看下表的返回值

在这里插入图片描述
所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1”
Java中设置不同地区的输出可以使用 Locale.setDefault(Locale.地区名) 来实现。

三、问题解决

Date(); 会获取当前的系统时间进行赋值。
掌握时间格式转换SimpleDateFormat
掌握日期类型的使用Calendar

package zuoye;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

/**
 * 第7题:需求说明
 * 获取当前时间,使用SimpleDateFormat以“年-月-日”方式显示
 * 计算2015年4月6日是一年中的第几星期
 */
/**/
public class Calendar1 {
    //计算2015年4月6日是一年中的第几星期
    public void week() {
        Date date = new Date();
        // 字符串转换日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年-MM月-dd日");
        //将日期类型转换为字符串
        String format = sdf.format(date);
        System.out.println(format);
        // 创建 Calendar 对象
        Calendar cal = Calendar.getInstance();
        //java.util.Calendar cal = java.util.Calendar.getInstance();    //写法2
        cal.set(Calendar.YEAR,2015);
        cal.set(Calendar.MONTH,3); //因为下标是从0开始的
        cal.set(Calendar.DAY_OF_WEEK,3);    //本机默认一周的第一天为Sunday,所以Sunday的下标是1,4月6号是2015年的周一,所以下标为2。
        //cal.set(2015,3,6);   //写法2:set(int year, int month, int date)

        System.out.println("2015年4月6日是一年中的第"+(cal.get(Calendar.WEEK_OF_YEAR))+"个星期");
    }

    public static void main(String[] args) {
        Calendar1 cal1 = new Calendar1();
        cal1.week();
    }
}

运行结果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一小人物@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值