黑马程序员技术交流社区

标题: 怎么知道是星期几 [打印本页]

作者: yanghu    时间: 2014-4-17 19:07
标题: 怎么知道是星期几
我输入一个日期格式,怎么知道是这年的星期几,java里面有直接的方法吗,还是需要自己去想算法?

作者: 轻语。    时间: 2014-4-17 19:19
本帖最后由 伍叶竹 于 2014-4-17 19:27 编辑

java.util.Date,和java.util.Calendar 是 java 的时间类型。Java.util.Calendar类是java.util.Date类的一个更加深入,更加全面的替代。
Java.util.Calendar类支持java.util.Date的所有功能。jdk1.1开始。

可以去找找里面的方法。应该有你要的。
好像论坛有人自己写了代码实现你说的功能。你可以找一下。
  1. //根据日期取得星期几
  2.         public static String getWeek(Date date){
  3.                 String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
  4.                 Calendar cal = Calendar.getInstance();
  5.                 cal.setTime(date);
  6.                 int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
  7.                 if(week_index<0){
  8.                         week_index = 0;
  9.                 }
  10.                 return weeks[week_index];
  11.         }
复制代码
http://blog.csdn.net/cselmu9/article/details/8625530
参考。很全。



作者: 曲佳奇    时间: 2014-4-17 19:27
本帖最后由 曲佳奇 于 2014-4-17 19:59 编辑

Calendar cal = Calendar.getInstance();
int weekday = cal.get(Calendar.DAY_OF_WEEK);

星期日为一周的第一天
SUN
MON
TUE
WED
THU
FRI
SAT
DAY_OF_WEEK返回值
1
2
3
4
5
6
7
星期一为一周的第一天
MON
TUE
WED
THU
FRI
SAT
SUN
DAY_OF_WEEK返回值
1
2
3
4
5
6
7
所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1”

默认的就是第一种  以周日为第一天 所以结果转换星期需要 -1



作者: ⒈心只霸占沵    时间: 2014-4-17 19:31
  1.                   Calendar c=Calendar.getInstance();
  2.                  c.set(2014, 3, 17);//代表的是2014 -4- 17    3代表的是4月份
  3.                  System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日为索引0   依次类推
复制代码

作者: yanghu    时间: 2014-4-17 19:41
伍叶竹 发表于 2014-4-17 19:19
java.util.Date,和java.util.Calendar 是 java 的时间类型。Java.util.Calendar类是java.util.Date类的一个 ...

Calendar这个类好像可以,但这个类能构造函数怎么用?
参数:
zone - 要使用的时区
aLocale - 用于星期数据的语言环境
怎么构造2014-04-16
作者: Kelvinhu    时间: 2014-4-17 19:59
本帖最后由 Kelvinhu 于 2014-4-17 20:01 编辑


贴代码说明。

用Calendar类来判断是周几:

  1. package Testpackage;

  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.*;

  5. public class TestWeek {
  6.         public static void main(String args[]) throws ParseException {
  7.         Scanner in = new Scanner(System.in);
  8.         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  9.         String week=getWeek(format.parse(in.next()));
  10.         System.out.print(week);
  11.         }
  12.        
  13.        
  14.        
  15.         static String getWeek(Date date){
  16.                 String[] weeks = {"周一","周二","周三","周四","周五","周六","周天"};
  17.                 Calendar cal = Calendar.getInstance();
  18.                 cal.setTime(date);
  19.                 int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
  20.                 if(week_index<0){  
  21.             week_index = 0;  
  22.         }
  23.         return weeks[week_index];  
  24.     }
  25. }
复制代码



作者: 轻语。    时间: 2014-4-17 20:33
yanghu 发表于 2014-4-17 19:41
Calendar这个类好像可以,但这个类能构造函数怎么用?
参数:
zone - 要使用的时区

Calendar类是一个抽象类,不能用构造器来创建Calendar对象,
但可以通过静态的getInstance方法获取对象。
先Calendar c = Calendar.getInstance();
再使用里面的方法System.out.println(c.get(Calendar.YEAR));  YEAR字段可以改成需要的,DAY,MONTH
还有一些 c.set(年,月,日,时,分,秒)
其他的用法可以自己网上查,还有api文档可以查。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2