A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heim.zuoye;

import java.util.Calendar;
import java.util.Scanner;

public class Test3 {

        /**
         *         (1)通过键盘录入日期字符串,格式(2015-10-20)
                (2)输出该日期是星期几及这一年的第几天
                (3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是  2015年的第 293 天"
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
               
                System.out.println("请输入日期字符串,格式(2015-10-20):");
                String line = sc.nextLine();
                String[] s = line.split("-");
                int[] arr = new int[s.length];
                for (int i = 0; i < arr.length; i++) {
                        arr[i] = Integer.parseInt(s[i]);
                }
                Calendar c = Calendar.getInstance();
                c.set(arr[0], arr[1], arr[2]);
                c.get(Calendar.DAY_OF_YEAR);
                System.out.println(c.get(Calendar.YEAR) + "-" + getNum((c.get(Calendar.MONTH)+1))
                                + "-" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "-" + getWeek(c.get(Calendar.DAY_OF_WEEK))
                                +"第" + c.get(Calendar.DAY_OF_YEAR) + "天");
        }
        public static String getWeek(int week) {
                String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
                return arr[week];
        }
        public static String getNum(int num) {
                return num > 0 ? "" + num : "0" + num;
        }

}

6 个回复

倒序浏览
看不懂,咋搞
回复 使用道具 举报
看不懂,好高深呀
回复 使用道具 举报
c.set(arr[0], arr[1], arr[2]);
这里有问题,你设置MONTH的时候并没有考虑到MONTH是从0开始的。或者说录入者并不会想到。
而你获取MONTH字段的时候又给它+1了,所以实际的比你期望的多了1个月。
以下是set的API文档说明。
set

public final void set(int year,
                      int month,
                      int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。
参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
不太懂是什么意思,观察观察
回复 使用道具 举报
阿卜 发表于 2016-8-24 21:04
c.set(arr[0], arr[1], arr[2]);
这里有问题,你设置MONTH的时候并没有考虑到MONTH是从0开始的。或者说录 ...

好的 谢谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马