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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-8-9 16:01  /  1302 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张振纲 于 2012-8-9 16:07 编辑
  1. /*
  2. 需求:获取昨天的这个时刻

  3. 思路:获取现在的时间,然后让日期倒一天
  4. */

  5. import java.util.*;
  6. class  CalendarTest2
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 yesterday();
  11.         }

  12.         public static void yesterday()
  13.         {
  14.                 Calendar c = Calendar.getInstance();   [color=Red]这个是创建Calendar对象吗?[/color]

  15.                 c.add(Calendar.DAY_OF_MONTH,-1);

  16.                 System.out.println(Calendar.HOUR_OF_DAY);
  17.         }

  18. }
复制代码
Calendar.名称  是调用什么?
为什么上述代码不能返回昨天现在的时间?

Date和Calendar都可以返回时间,有什么具体区别吗?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 朱志辉 于 2012-8-9 18:04 编辑

17行中Calendar类的构造方式的权限是protected的,也是一个抽象类,不能在外部直接new,Calendar提供了一个方法getInstance()来获取一个Calendar 对象。
21行代码只是输入了Calendar类的静态成员变量HOUR_OF_DAY的初始值,而不是得到当前默认语言环境的小时,改成c.get(Calendar.HOUR_OF_DAY)就行了。同样的,要想得到当天是多少号,就用c.get(Calendar.DAY_OF_MONTH)。
如对以上代码有疑问,可以打开jdk安装目录下的src.zip中的java\util\Calendar.java查看,或者看API说明文档。

Date是时间,Calendar是日历。一般的,显示时间,用Date;操作时间,用Calendar。虽然Date也能操作时间,但其构造方法多数已过时。

点评

比较明白了  发表于 2012-8-9 20:22
回复 使用道具 举报
一 、 Date 与 SimpleDateFormat  相结合

/**
    * 得到现在时间
    *
    * @return 字符串 yyyyMMdd HHmmss
    */
public static String getStringToday() {
    Date currentTime = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
    String dateString = formatter.format(currentTime);
    return dateString;
}

可以获取任何自己想要的格式

二 、Calendar类

public class DateUtil {

  public static String getNow_YMDHMS(){
   
     Calendar c=Calendar.getInstance();
   
     String year=String.valueOf(c.get(Calendar.YEAR));
   
     String month=String.valueOf(c.get(Calendar.MONTH)+1);
     if(month.length()==1){
      month="0"+month;
     }
   
     String day=String.valueOf(c.get(Calendar.DAY_OF_MONTH));
     if(day.length()==1){
      day="0"+day;
     }
   
     String hour=String.valueOf(c.get(Calendar.HOUR_OF_DAY));
     if(hour.length()==1){
      hour="0"+hour;
     }
   
     String minute=String.valueOf(c.get(Calendar.MINUTE));
     if(minute.length()==1){
      minute="0"+minute;
     }
   
     String second=String.valueOf(c.get(Calendar.SECOND));
     if(second.length()==1){
      second="0"+second;
     }
     String ymdhms=year+month+day+hour+minute+second;
     return ymdhms;
  }

  public static void main(String[] args) {
  
    String precise_time = getNow_YMDHMS();
     System.out.println(precise_time);
  }


更好的是用simpledateformat

public class testDateTime {
    public static void main(String[] args) {
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String str = date.format(new Date());
        System.out.println(str);
    }


三 、 使用Date 类(方法已过时,但还能用)
  public static void main(String[] args) {
  Date date = new Date();  
System.out.print((date.getYear()+1900)+"-"+date.getMonth()+"-"+date.getDate())
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马