• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
WFiresun
博客园    首页    新随笔    联系   管理    订阅  订阅

Java Date

Java Date类的使用总结

 

Date类表示特定的瞬间,精确到毫秒。

有2种方法可以创建Date对象(这里不考虑已过时的构造函数)

1、public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

1 @Test
2 public void test1() {
3     Date date = new Date();
4     System.out.println(date);
5 }
Sun Oct 23 22:39:14 CST 2016

2、public Date(long date)——根据给定的毫秒值创建日期对象。

1 @Test
2 public void test2() {
3     long time = System.currentTimeMillis();
4     Date date = new Date(time);
5     System.out.println(date);
6 }
Sun Oct 23 22:41:42 CST 2016

介绍完了Date的构造函数后,接下来来看看日期与毫秒值的相互转换

1、public long getTime()——日期转毫秒值

通过getTime方法可以将一个日期类型转换为long类型的毫秒值

1 @Test
2 public void test3() {
3     Date date = new Date();
4     System.out.println(date.getTime());
5 }
1477234414353

2、public void setTime(long time)——毫秒值转日期

复制代码
1 @Test
2 public void test4() {
3     long time = System.currentTimeMillis();
4     Date date = new Date();
5     date.setTime(time);
6     System.out.println(date);
7 }
复制代码
Sun Oct 23 22:53:05 CST 2016

当然也可以通过构造函数public Date(long date)将毫秒值转为日期类型。

通常我们会比较2个日期的大小,Date类提供以下方法用来比较2个日期的相关操作

1、public boolean before(Date when)——测试此日期是否在指定日期之前,当且仅当此Date对象表示的瞬间比when表示的瞬间早,才返回true;否则返回false。

1 @Test
2 public void test5() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.before(date2));
6 }
true

2、public boolean after(Date when)——测试此日期是否在指定日期之后,当且仅当此Date对象表示的瞬间比when表示的瞬间晚,才返回true;否则返回false。

1 @Test
2 public void test6() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.after(date2));
6 }
false

3、public int compareTo(Date anotherDate)——比较两个日期的顺序。

如果参数Date等于此Date,则返回值0;如果此Date在Date参数之前,则返回小于0的值;如果此Date在Date参数之后,则返回大于0的值。

1 @Test
2 public void test7() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.compareTo(date2));
6 }
-1




Java 日期格式化 DateFormat与SimpleDateFormat

import java.util.Date;
import java.text.DateFormat;


/**
* 格式化时间类
* DateFormat.FULL = 0
* DateFormat.DEFAULT = 2
* DateFormat.LONG = 1
* DateFormat.MEDIUM = 2
* DateFormat.SHORT = 3
* @author    Michael 
* @version   1.0, 2007/03/09
*/

public class Test{
    public static void main(String []args){
        Date d = new Date();
        String s;
          
        /** Date类的格式: Sat Apr 16 13:17:29 CST 2006 */
        System.out.println(d);
          
        System.out.println("******************************************");   
        
        /** getDateInstance() */ 
        /** 输出格式: 2006-4-16 */
        s = DateFormat.getDateInstance().format(d);
        System.out.println(s);
        
        /** 输出格式: 2006-4-16 */
        s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(d);
        System.out.println(s);
        
        /** 输出格式: 2006年4月16日 星期六 */
        s = DateFormat.getDateInstance(DateFormat.FULL).format(d);
        System.out.println(s);
        
        /** 输出格式: 2006-4-16 */
        s = DateFormat.getDateInstance(DateFormat.MEDIUM).format(d);
        System.out.println(s);
        
        /** 输出格式: 06-4-16 */
        s = DateFormat.getDateInstance(DateFormat.SHORT).format(d);
        System.out.println(s);
        
        /** 输出格式: 2006-01-01 00:00:00 */
        java.text.DateFormat format1 = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        s = format1.format(new Date());
        System.out.println(s);
        
        /** 输出格式: 2006-01-01 01:00:00 */
        System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(new Date()));
        

        /** 输出格式: 2006-01-01 13:00:00 */
        System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));

        /** 输出格式: 20060101000000***/
        java.text.DateFormat format2 = new java.text.SimpleDateFormat("yyyyMMddhhmmss");
        s = format2.format(new Date());
        System.out.println(s); 
    }
}

补充一下:   
Calendar   cal   =   Calendar.getInstance();   
cal.setTime(new   Date());     
System.out.println("System   Date:   "   +   cal.get(Calendar.MONTH+1));     
注意下,月份是从0开始的,要Calendar.MONTH+1才可以的

 

 

 

 

java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串

2016年11月04日 14:38:26 李学凯 阅读数:212951
 
版权声明:觉得此文有用的,不嫌麻烦的,就留个言呐,或者点个赞呐(额,就是文章底部的“顶”啦),要是嫌弃麻烦呢,也麻烦点个赞嘛,要是实在不想点赞呢,也不是不可以。 但是,你要是想踩一脚呢,那还是赶紧,马上,快快的闪人。 小心我手里三十米长的大刀。 哼哼。想想都怕 !!! https://blog.csdn.net/qq_27093465/article/details/53034427

日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串
白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。

日期和时间模式(注意大小写,代表的含义是不同的)

 

  1.  
    yyyy:年
  2.  
    MM:月
  3.  
    dd:日
  4.  
    hh:1~12小时制(1-12)
  5.  
    HH:24小时制(0-23)
  6.  
    mm:分
  7.  
    ss:秒
  8.  
    S:毫秒
  9.  
    E:星期几
  10.  
    D:一年中的第几天
  11.  
    F:一月中的第几个星期(会把这个月总共过的天数除以7)
  12.  
    w:一年中的第几个星期
  13.  
    W:一月中的第几星期(会根据实际情况来算)
  14.  
    a:上下午标识
  15.  
    k:和HH差不多,表示一天24小时制(1-24)。
  16.  
    K:和hh差不多,表示一天12小时制(0-11)。
  17.  
    z:表示时区

 

(2017-12-28日,更新)

因为看到了Java 8 里面对日期的格式化操作的API,回头又看了看这个以前的日期格式化。发现,文中的实例不是很全面。不符合湿胸的性格,特地来完善一下。

 

  1.  
    private static void formatDataTest() {
  2.  
    /*
  3.  
    * 日期转期望格式的字符串
  4.  
    */
  5.  
    //HH 和 hh 的差别:前者是24小时制,后者是12小时制。
  6.  
    StringBuilder sb = new StringBuilder();
  7.  
    sb.append("yyyy年MM月dd日 HH:mm:ss")
  8.  
    .append(" 上下午标志 a")
  9.  
    .append(" E")
  10.  
    .append(" 一年中的第D天")
  11.  
    .append(" 一月中的第F个星期")
  12.  
    .append(" 一年中的第w个星期")
  13.  
    .append(" 一月中的第W个星期")
  14.  
    .append(" Z")
  15.  
    .append(" z");
  16.  
    SimpleDateFormat sdf = new SimpleDateFormat(sb.toString());
  17.  
    String dateString = sdf.format(new Date());
  18.  
    System.out.println(dateString);
  19.  
    /*
  20.  
    * 字符串转日期
  21.  
    */
  22.  
    Date date;
  23.  
    try {
  24.  
    date = sdf.parse(dateString);
  25.  
    System.out.println(date);
  26.  
    } catch (ParseException e) {
  27.  
    System.out.println(e.getMessage());
  28.  
    }
  29.  
    }
运行结果:
2017年12月28日 18:21:731 上下午标志 下午 星期四 一年中的第362天 一月中的第4个星期 一年中的第52个星期 一月中的第5个星期 +0800 CST
Thu Dec 28 18:21:00 CST 2017

 

这里多说一句,一个月中的第几个星期,  F   这个出来的结果,不靠谱,具体我就在这多做测试啦,我是测试过,才这么说的,还是后面的那个  W  靠谱。

(更新完成)

 

具体简单常见的实例:

 

 

  1.  
    package com.lxk.DateFormat;
  2.  
     
  3.  
    import java.text.SimpleDateFormat;
  4.  
    import java.util.Date;
  5.  
     
  6.  
    /**
  7.  
    * Created by lxk on 2016/11/4
  8.  
    */
  9.  
    public class Format {
  10.  
    public static void main(String[] args) {
  11.  
    Date ss = new Date();
  12.  
    System.out.println("一般日期输出:" + ss);
  13.  
    System.out.println("时间戳:" + ss.getTime());
  14.  
    //Date aw = Calendar.getInstance().getTime();//获得时间的另一种方式,测试效果一样
  15.  
    SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  16.  
    String time = format0.format(ss.getTime());//这个就是把时间戳经过处理得到期望格式的时间
  17.  
    System.out.println("格式化结果0:" + time);
  18.  
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
  19.  
    time = format1.format(ss.getTime());
  20.  
    System.out.println("格式化结果1:" + time);
  21.  
    }
  22.  
    }

测试结果图:

 

 

需要什么格式,自己拼好字符串,就可以格式化日期啦。授人以渔呀有木有。

喷子们要是觉得简单呢,就省省唾沫星子吧。我就记个笔记用。

 

上面的是:日期转自己想要的字符串格式,下面是字符串转日期类型。

 

  1.  
    private static void testStringToDate() {
  2.  
    String s = "2017-05-25";
  3.  
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  4.  
    Date date = null;
  5.  
    try {
  6.  
    date = format.parse(s);
  7.  
    } catch (ParseException e) {
  8.  
    System.out.println(e.getMessage());
  9.  
    }
  10.  
    System.out.println(date);
  11.  
    }

下面是运行的debug截图。

 

 

 

上面的那个  日期和时间模式  是按我们常用的年月日时分秒来放的,下面传个别人的专业的图,供参考。

定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

 

posted @ 2018-08-06 15:34  WFiresun  阅读(241)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3