大鱼

java中的时间转换及时间对比

 SimpleDateFormat函数语法:

  

   G 年代标志符

   y 年

   M 月

   d 日

   h 时 在上午或下午 (1~12)

   H 时 在一天中 (0~23)

   m 分

   s 秒

   S 毫秒

   E 星期

   D 一年中的第几天

   F 一月中第几个星期几

   w 一年中第几个星期

   W 一月中第几个星期

   a 上午 / 下午 标记符

   k 时 在一天中 (1~24)

   K 时 在上午或下午 (0~11)

   z 时区

*/

  • DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");        
  • DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");        
  • Date date = null;   
  • String str = null;                 
  •            
  • // String转Date   
  • str = "2007-1-18";         
  • try {   
  •      date = format1.parse(str);  
  •      data = format2.parse(str);
  • } catch (ParseException e) {   
  •      e.printStackTrace();   
  • }   
  •   
  • //Date转String
  • date=new Date();
  • str=format1.format(date);
  • str=format2.format(date);

     

    1、Date——>String

    String sdate;

    Date ddate;

    ……

    sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(ddate);

    2、String——>Date

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    sdf.setLenient(false);

    String sdate="2006-06-06";

    Date ddate;

    ddate=sdf.parse(sdate);

    另外Integer、Double等数据包装类型与String类型的相互转换为:

    (以Integer为例)

    Integer——>String

    Integer ii;

    String si;

    ……

    si=ii.toString;

    String——>Intteger

    Integer ii;

    String si;

    ……

    ii=Integer.valueOf(si);

    字符串转换成时间及时间相减:
         1:) SimpleDateFormat formatter = new SimpleDateFormat ("yyyy.MM.dd");
             //假定像2002.07.04的是合法日期其他都非法。
         String str="2002.07.04";
         ParsePosition pos = new ParsePosition(0);
         Date dt=formatter.parse(str,pos);
        if(dt!=null)
        {
          //是合法日期
        }
         else
        {
          //非法日期
        }

     


     

    2:)
    两个日期相减
    import java.util.*;
    import java.text.*;
    class a
    {
    public static void main(String[] args)
    {
       String s1 = "2003/08/15 17:15:30";
       String s2 = "2002/09/14 14:18:37";
       try{
       SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
      
       ParsePosition pos = new ParsePosition(0);
       ParsePosition pos1 = new ParsePosition(0);
       Date dt1=formatter.parse(s1,pos);
       Date dt2=formatter.parse(s2,pos1);
       System.out.println("dt1="+dt1);
       System.out.println("dt2="+dt2);
       long l = dt1.getTime() - dt2.getTime();
      
       System.out.println("Hello World!="+l);
       }catch(Exception e){
        System.out.println("exception"+e.toString());
       }
      
    }
    }


     

     


     


    3:)得到2个月后的日期:
    import java.util.*;
    import java.text.DateFormat;
    public class test2
    {
       public static void main(String args[]) throws Exception
       {
        String date="2001/11/30";
       
        DateFormat dateFormat =
       DateFormat.getDateInstance(DateFormat.MEDIUM);
        GregorianCalendar grc=new GregorianCalendar();
        grc.setTime(new Date(date));


     

     


     


        grc.add(GregorianCalendar.MONTH,2);
        System.out.println("grc="+dateFormat.format(grc.getTime()));  
       }
    }


     

    15.计算日期间隔
    public int getDays(Date sd,Date ed){
       return (ed.getTime()-sd.getTime())/(3600*24*1000)
    }


     

     


     

    16.日期加减
    SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
    String str="20011230";
    Date dt=sdf.parse(str,new ParsePosition(0));
    Calendar rightNow = Calendar.getInstance();
    rightNow.setTime(dt);
    rightNow.add(Calendar.DATE,2);//你要加减的日期
    Date dt1=rightNow.getTime();
    String reStr=sdf.format(dt1,"",new FieldPosition(0));
    System.out.println(reStr);


     

     


     

    17.时间显示控制   
    第一种方式:
    <html>
    <head><title>取得系统时间</title></head>
    <body>
    <%java.util.Date date=new java.util.Date();%>
    现在是:<%=date%>
    </body>
    </html>
    运行结果:
    现在是:Tue Jul 31 10:32:52 CST 2001


     

     


     

    第二种方式:
    <%@ page import="java.util.*, java.text.*" %>
    <HTML>
    <HEAD><TITLE>显示当前时间</TITLE></HEAD>
    <BODY>
    当前时间:
    <%
    Date now = new Date();
    out.println(DateFormat.getTimeInstance().format(now));
    %>
    </BODY>
    </HTML>
    运行结果:
    10:31:42 AM


     

     


     

    第三种方式:
    <%
    java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy年MM月dd日");
    java.util.Date currentTime_1 = new java.util.Date();
    out.print(formatter.format(currentTime_1));
    %>
    运行结果:
    2001年07月31日


     

     


     

    第四种方式:
    <%
    java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy/MM/dd HH/mm/ss");
    java.util.Date currentTime_1 = new java.util.Date();
    out.print(formatter.format(currentTime_1));
    %>
    运行结果:
    2001/07/31 10/32/52
    第三四两种方式其实是一样的他可以产生千变万化的格式。

    //比较两个时间是否相同

    public class Test {

     /**
      * @param args
      */
     
     private static boolean isSameDate(Date date){
      Calendar calendar=Calendar.getInstance();
      //int todays=calendar.get(Calendar.DAY_OF_YEAR);
    //  calendar.setTime(date);
     // int lastDate=calendar.get(Calendar.DAY_OF_YEAR);
      if(calendar.getTime().after(date)){//判断当前时间是否为以后的时间
       return true;
      }else{
       return false;
      }
      }
     public static void main(String[] args) throws ParseException {
      // TODO Auto-generated method stub
      
      
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
      sdf.setLenient(false);
      String sdate="2009-08-28";
      Date ddate;
      ddate=sdf.parse(sdate);
      
      
      
      Date da=new Date();
      System.out.println(da);
     
      isSameDate(da);
      System.out.println(isSameDate(ddate));
      
      
      
      
     }

    }

     

  • posted on 2009-09-07 12:17 大鱼 阅读(587) 评论(0)  编辑  收藏 所属分类: j2se


    只有注册用户登录后才能发表评论。


    网站导航: