zoukankan      html  css  js  c++  java
  • Java中Date与String的相互转换

    我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt。DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFormat。SimpleDateFormat有4个构造函数,最经常用到是第二个。

    构造函数中pattern为时间模式,具体有什么模式,API中有说明,如下

    1、日期转字符串(格式化)

    package com.test.dateFormat;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.junit.Test;
    
    public class Date2String {
        @Test
        public void test() {
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println(sdf.format(date));
            sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(date));
            sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            System.out.println(sdf.format(date));
        }
    }
    

    运行结果

    2016-10-24
    2016-10-24 21:59:06
    2016年10月24日 21:59:06
    

    2、字符串转日期(解析)

    package com.test.dateFormat;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import org.junit.Test;
    
    public class String2Date {
        @Test
        public void test() throws ParseException {
            String string = "2016-10-24 21:59:06";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.parse(string));
        }
    }
    

    运行结果

    Mon Oct 24 21:59:06 CST 2016
    

    在字符串转日期操作时,需要注意给定的模式必须和给定的字符串格式匹配,否则会抛出java.text.ParseException异常,例如下面这个就是错误的,字符串中并没有给出时分秒,那么SimpleDateFormat当然无法给你凭空解析出时分秒的值来

    package com.test.dateFormat;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import org.junit.Test;
    
    public class String2Date {
        @Test
        public void test() throws ParseException {
            String string = "2016-10-24";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.parse(string));
        }
    }
    

    运行报错

    Exception in thread "main" java.text.ParseException: Unparseable date: "2016-10-24"
    	at java.text.DateFormat.parse(DateFormat.java:366)
    	at com.test.dateFormat.String2Date.main(String2Date.java:19)
    

    不过,给定的模式比字符串少则可以

    package com.test.dateFormat;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import org.junit.Test;
    
    public class String2Date {
        @Test
        public void test() throws ParseException {
            String string = "2016-10-24 21:59:06";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println(sdf.parse(string));
        }
    }
    

    运行结果

    Mon Oct 24 00:00:00 CST 2016
    

    可以看出时分秒都是0,没有被解析,这是可以的。

  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/huangminwen/p/5994846.html
Copyright © 2011-2022 走看看