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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄方 中级黑马   /  2012-3-9 13:00  /  3669 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中怎样获得日期、求天数 啊?

11 个回复

倒序浏览
在API中打上Calendar,点击搜索。。。。。。。。。。。。。
回复 使用道具 举报
Java 语言提供了许多处理日期的工具。其中一些工具在其他语言中使用起来更困难一些。尽管如此,Java 语言提供的那些工具几乎可以做创建日期方面的任何事情,并完全根据您想要的格式对这些日期进行格式化。  当 Java 语言出错时,它会包含一个叫做 Date 的类,这个类对创建和处理日期很有帮助。不幸的是,这个类在支持同步方面表现不是很好,所以 Sun 添加了两个帮助改善这种情况的类:  · Calendar   · DateFormat   首先讨论一下 Calendar,稍后再讨论 DateFormat。  创建 Date 仍然比较容易:  Date aDate = new Date(System.currentTimeMillis());  或者可以使用以下代码:  Date aDate = new Date();  这将为我们提供一个表示当前确切日期和时间的 Date,并以当前地区 格式显示。国际化已经超出了本教程的范围,只要知道获得的 Date 与本地机器的地区时间一致即可。  既然有了一个实例,为什么不能处理它呢?坦率地说,它太小了。我们可以将一个 Date 与另一个日期进行比较,查看前一个日期是在后一个日期的 before() 还是 after()。还可以通过调用 setTime() 将日期重新设置为一个新的时间瞬间,setTime() 带有一个 long 参数,该参数表示从 1970 年 1 月 1 日午夜起至现在过去了多少毫秒,这也正是 System.currentTimeMillis() 返回的值。在此之外,我们受到了限制。  日历  现在,Date 给人们带来的混乱要多于它为人们带来的有用性,因为大部分日期处理行为都受到人们的抨击。人们习惯于获得并设置部分 Date(比如,年、月,等等)。现在,必须同时处理 Date 和 Calendar 才能设置部分 Date。但是一旦有了 Date 实例,就可以使用 Calendar 获得并设置部分 Date。例如:  Date aDate = new Date(System.currentTimeMillis());  Calendar calendar = GregorianCalendar.getInstance();  calendar.setTime(aDate);  在这里,我们创建了一个 GregorianCalendar,并将它的时间设置为以前创建的 Date。通过在 Calendar 上调用不同的方法,也能做到这一点:  Calendar calendar = GregorianCalendar.getInstance();  calendar.setTimeInMillis(System.currentTimeMillis());  通过 Calendar,我们现在可以访问和操作 Date 的组件。获得并设置部分 Date 也成为一个简单的过程。只需要在 Calendar 上调用适当的 getter 和 setter 即可,如下所示:  calendar.set(Calendar.MONTH, Calendar.JULY);  calendar.set(Calendar.DAY_OF_MONTH, 15);  calendar.set(Calendar.YEAR, 1978);  calendar.set(Calendar.HOUR, 2);  calendar.set(Calendar.MINUTE, 15);  calendar.set(Calendar.SECOND, 37);  System.out.println(calendar.getTime());  这将输出 1987 年 7 月 15 日上午 2 点 15 分 37 秒的格式化后的输出字符串。(在 Calendar 上也有一些辅助方法,允许同时设置一些或几乎所有的组件。)这里调用的是 set(),它带有两个参数:  · 想要设置的 Date 的 field(或组件)。   · 该字段的值。   我们可以用 Calendar 类中指定的常数来引用这些字段。在某些情况下,同一字段会有一个以上的名称,比如 Calendar.DAY_OF_MONTH,还可以用 Calendar.DATE 来引用它。除了可能是 Calendar.MONTH 的值和 Calendar.DATE 的值之外,其他的值都很简单。在 Java 语言的日期中,月份是基于 0 的(也就是说,1 月是 0),这使得使用指定的常数来设置月份值成为一种明智之举,但也使得正确地显示日期成为令人沮丧的事。小时的数值是从 0 到 24。  一旦有一个建立好的 Date,就可以提取其中的一部分。  System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR));  System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH));  System.out.println("The DAY is: " + calendar.get(Calendar.DATE));  System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR));  System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE));  System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND));  System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM));  内置日期的格式化  通常可以使用 Date 格式化日期。现在,必须使用其他几个类:  · DateFormat   · SimpleDateFormat   · DateFormatSymbols   在这里,我们并不想介绍日期格式化所涉及的所有复杂事物。您可以自己去研究这些类。但我们仍将介绍一些使用这些工具的基础知识。  DateFormat 类允许我们创建特定于场所的格式化程序,如下所示:  DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT);  Date aDate = new Date();  String formattedDate = dateFormatter.format(today);  该代码使用用于这种场所的默认格式创建了一个格式化的日期字符串。在我的机器上,这个日期字符串看起来是这样的:  Nov 11, 2005  这是默认样式,但所有的样式都适用于我们。我们可以使用任何预定义的样式。还可以调用 DateFormat.getTimeInstance() 来格式化时间,或者调用 DateFormat.getDateTimeInstance() 将日期和时间一起格式化。以下是各种样式的输出,都适用于美国地区:  样式 日期 时间 日期/时间  DEFAULT  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM  SHORT  11/11/05 7:44 PM 11/11/05 7:44 PM  MEDIUM  Nov 11, 2005 7:44:56 PM Nov 11, 2005 7:44:56 PM  LONG  November 11, 2005 7:44:56 PM EST November 11, 2005 7:44:56 PM EST  FULL  Thursday, November 11, 2005 7:44:56 PM EST Thursday, November 11, 2005 7:44:56 PM EST  定制格式化:  这些预定义的格式在大多数情况下表现良好,但是您也可以使用 SimpleDateFormat 定义自己的格式。使用 SimpleDateFormat 非常简单:  · 使用一个格式模式字符串(和一个地区,如果您希望的话)来实例化 SimpleDateFormat。   · 使用 Date 在其上调用 format()。   结果是一个格式化了的日期字符串。以下是一个例子:  Date aDate = new Date();  SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");  String formattedDate = formatter.format(today);  System.out.println(formattedDate);  在运行该代码时,将获得以下类似结果(当然,它将影响运行代码时的当前日期):  11/05/2005  在上述例子中,用引号括起来的字符串遵循了日期格式化模式的模式语法规则。Java.sun.com 中有一些那些规则的很好概括(请参阅 参考资料)。以下是一些有用的经验法则:您可以指定日期和时间的模式。  · 一些模式语法并不是由直觉得到的(例如,mm 定义了一个两位数的分钟模式;要获得简写的月份,可以使用 MM)。

评分

参与人数 1技术分 +3 收起 理由
职业规划-刘倩老师 + 3 赞一个!

查看全部评分

回复 使用道具 举报
主要使用Calendar类,定义一个对象
Calendar c=new GregorianCalendar();
System.out.println("当前日期:"+c.get(c.YEAR)+"年"+(c.get(c.MONTH)+1) +"月"+ (c.get(c.DAY_OF_MONTH))+"日");
额,话说是求当前日期么?我想当然的这么认为了。
回复 使用道具 举报
楼主是不是想求现在时间距离未来某一天的天数啊?
回复 使用道具 举报
{:soso_e127:}楼主 你没好好看视频么?  还是楼主你在算 世界末日是哪天
回复 使用道具 举报
程洪 发表于 2012-3-9 16:05
楼主 你没好好看视频么?  还是楼主你在算 世界末日是哪天

哥们,什么意思?
回复 使用道具 举报
程洪 金牌黑马 2012-3-10 08:44:41
8#
黄方 发表于 2012-3-9 19:13
哥们,什么意思?

呵呵 没事 开个小玩笑 哥们几期的?
回复 使用道具 举报
一 、 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())
}
回复 使用道具 举报
程洪 发表于 2012-3-10 08:44
呵呵 没事 开个小玩笑 哥们几期的?

额,没事的!我们要等6.26号在学校考完试,再去黑马,估计7月初啦!
回复 使用道具 举报
学习,学习
回复 使用道具 举报
小白 黑马帝 2012-3-10 20:39:31
12#
查查api 那上面就有!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马