Java API —— DateFormat类

1、DateFormat类概述        

  DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

  是抽象类,所以使用其子类SimpleDateFormat。

2、SimpleDateFormat构造方法    

  public SimpleDateFormat():将一个 Date 格式化为日期/时间字符串。(默认模式)

  public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

3、成员方法 

  public final String format(Date date):将一个 Date 格式化为日期/时间字符串。

  public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期。

String和Date的相互转化理解

 

  举例1:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 * Date     --     String(格式化)
 *         public final String format(Date date)
 *
 * String -- Date(解析)
 *         public Date parse(String source)
 *
 * DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat。
 *
 * SimpleDateFormat的构造方法:
 *         SimpleDateFormat():默认模式
 *         SimpleDateFormat(String pattern):给定的模式
 *             这个模式字符串该如何写呢?
 *             通过查看API,我们就找到了对应的模式
 *             年 y
 *             月 M
 *             日 d
 *             时 H
 *             分 m
 *             秒 s
 *
 *             2014年12月12日 12:12:12
 */
public class DateFormatDemo01 {
    public static void main(String[] args) throws ParseException {
        // Date -- String
        // 创建日期对象
        Date d = new Date();
        // 创建格式化对象
        // SimpleDateFormat sdf = new SimpleDateFormat();
        // 给定模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
        // public final String format(Date date)
        String s = sdf.format(d);
        System.out.println(s);
        //String -- Date
        String str = "2008-08-08 12:12:12";
        //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf2.parse(str);
        System.out.println(date);
    }
}

  举例2:工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
    private DateUtil() {
    }
    /**
     * 这个方法的作用就是把日期转成一个字符串
     *
     * @param d
     *            被转换的日期对象
     * @param format
     *            传递过来的要被转换的格式
     * @return 格式化后的字符串
     */
    public static String dateToString(Date d, String format) {
        // SimpleDateFormat sdf = new SimpleDateFormat(format);
        // return sdf.format(d);
        return new SimpleDateFormat(format).format(d);
    }
    /**
     * 这个方法的作用就是把一个字符串解析成一个日期对象
     *
     * @param s
     *            被解析的字符串
     * @param format
     *            传递过来的要被转换的格式
     * @return 解析后的日期对象
     * @throws ParseException
     */
    public static Date stringToDate(String s, String format)
            throws ParseException {
        return new SimpleDateFormat(format).parse(s);
    }
}

测试类:

import java.text.ParseException;
import java.util.Date;
public class DateFormatDemo02 {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();
        //yyyy-MM-dd HH:mm:ss
        String s = DateUtil.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s);
        String s2 = DateUtil.dateToString(d,"yyyy年MM月dd日");
        System.out.println(s2);
        String s3 = DateUtil.dateToString(d,"HH:mm:ss");
        System.out.println(s3);
        String str = "2015-12-6";
        Date dd = DateUtil.stringToDate(str,"yyyy-MM-dd");
        System.out.println(dd);
    }
}

输出结果:

2015年12月06日 21:17:52

2015年12月06日

21:17:52

Sun Dec 06 00:00:00 CST 2015

举例3:算一下你来到这个世界多少天?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
 * 算一下你来到这个世界多少天?
 *
 * 分析:
 *         A:键盘录入你的出生的年月日
 *         B:把该字符串转换为一个日期
 *         C:通过该日期得到一个毫秒值
 *         D:获取当前时间的毫秒值
 *         E:用D-C得到一个毫秒值
 *         F:把E的毫秒值转换为年
 *             /1000/60/60/24
 */
public class DateFormatDemo03 {
    public static void main(String[] args) throws ParseException {
        // 键盘录入你的出生的年月日
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的出生年月日:");
        String line = sc.nextLine();
        // 把该字符串转换为一个日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d = sdf.parse(line);
        // 通过该日期得到一个毫秒值
        long myTime = d.getTime();
        // 获取当前时间的毫秒值
        long cutTime = System.currentTimeMillis();
        // 用D-C得到一个毫秒值
        long time = cutTime - myTime;
        // 把E的毫秒值转换为年
        long day = time / 1000 / 60 / 60 / 24;
        System.out.println("您来到这个世界:" + day + "天。");
    }
}
时间: 2024-10-12 22:25:29

Java API —— DateFormat类的相关文章

Java API ——StringBuffer类

1.StringBuffer类概述, 1)我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题 2)线程安全的可变字符序列 3)StringBuffer和String的区别 · 前者长度和内容可变,后者不可变.  · 如果使用前者做字符串的拼接,不会浪费太多的资源. 2.构造方法 · public StringBuffer() :无参构造方法 · public StringBuffer(int capacity

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

Java API —— Date类

1.Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数. 3.成员方法 public long getTime() public void setTime(long

Java API —— TreeSet类

1.TreeSet类  1)TreeSet类概述 使用元素的自然顺序对元素进行排序 或者根据创建 set 时提供的 Comparator 进行排序 具体取决于使用的构造方法.   2)TreeSet是如何保证元素的排序和唯一性的 底层数据结构是红黑树(红黑树是一种自平衡的二叉树) 例子1: package treesetdemos; import java.util.TreeSet; /** * Created by gao on 15-12-17. */ /* * TreeSet:能够对元素按

Java API —— BigDecimal类

1.BigDecimal类概述  由于在运算的时候,float类型和double很容易丢失精度,演示案例.所以,为了能精确的表示.计算浮点数,Java提供了BigDecimal 不可变的.任意精度的有符号十进制数. 2.构造方法 public BigDecimal(String val):建议使用参数为字符串的构造方法,如果参数为double或float,还是会出现不可预知的精度问题 3.BigDecimal类成员方法 public BigDecimal add(BigDecimal augen

Java API —— BigInteger类

1.BigInteger类概述        可以让超过Integer范围内的数据进行运算 2.构造方法     public BigInteger(String val) 3.BigInteger类成员方法 public BigInteger add(BigInteger val):加 public BigInteger subtract(BigInteger val):减 public BigInteger multiply(BigInteger val):乘 public BigInteg

Java API —— Pattern类

正则表达式 写一个功能实现QQ号码的校验. import java.util.Scanner; public class RegexDemo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的QQ号码:"); String str = sc.nextLine(); boolean f = queckQQ(str); Syst

Java API —— Random类

1.Random类概述 此类用于产生随机数 如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列. 2.构造方法 public Random() : 创建一个新的随机数生成器,没有给种子,默认种子是当前时间的毫秒值 public Random(long seed):使用单个long种子创建一个新的随机数生成器,给定种子后,每次的得到的随机数都是一样的. 3.Random类成员方法 public int nextInt():返回下一个伪随

Java API —— System类

1.System类概述 System 类包含一些有用的类字段和方法.它不能被实例化. 2.成员方法 public static void gc():运行垃圾回收器 System.gc()可用于垃圾回收.当使用System.gc()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源.在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法.finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用.