java时间日期格式化和JDBC中的处理

时间格式化类

SimpleDateFormat类

抽象类,工厂方法。用于java.util.Date和java.sql.Date。线程不安全

字符串格式化为时间对象 .parse()方法

    // 从字符串提取出日期
    String strDate = "2021-2-2";
    String pat = "yyyy-MM-dd";
    SimpleDateFormat format = new SimpleDateFormat(pat);
    Date d = null;
    try {
        //生成时间对象
        d = format2.parse(strDate);
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(format.format(d));

时间对象格式化为字符串 .format()方法

        // 将时间对象格式化为字符串
        Calendar cal = Calendar.getInstance();
        Date now = cal.getTime();
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
        String strDate = format.format(now);
        System.out.println(strDate);

DateTimeFormatter类

在这里插入图片描述

字符串转化为时间对象 .parse()

    // 将字符串转化为时间
    String dateStr = "2021年2月2日";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
    LocalDate date = LocalDate.parse(dateStr, formatter);
    System.out.println(date)

时间对象格式化为字符串 .format()

    // 将日期转化为字符串
    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
    String nowStr = now.format(formatter2);
    System.out.println(nowStr);

数据库中的日期时间类型与Java类中日期时间的对应

  • 日期类型用java.sql.Date
  • 时间类型用java.sql.Time
  • 日期/时间类型用java.sql.Timestamp
    范例:在oracle数据库中通过,
    select sysday from dual
    获取当前时间,在通过ResultSet获取查询结果时,用:getTimestamp(),可以把年月日时分秒都取出来,调用getDate()只能取出年月日,调用getTime()只能取出时分秒。

尽量不要调用getString()来获取日期/时间类型的数据

  • 调用getString()获取时间类型的数据,JDBC在内部将日期/时间转换为字符串;但是这个字符串的格式却取决于数据库导致兼容性较差。

如何将JDBC的日期/时间类型转换为字符串

	java.sql.Timestamp timeStamp = //通过数据库访问获取到该数据 
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
	String str = sdf.format(timeStamp);

select、update或insert时,如果某个字段为日期/时间类型,最好用PreparedStatement

	PreparedStatement pstmt = conn.prepareStatement("insert into tab ( begin_date ) values( ?)"); 
	pstmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); 
	pstmt.execute();

java.sql.Timestamp如何转换为java.util.Date

java.sql.Timestamp是java.util.Date的子类,不需要做任何转换直接赋值即可:

	java.sql.Timestamp ts; 
	java.util.Date utilDate; 
	utilDate = ts;

java.util.Date转换为java.sql.Timestamp

	java.sql.Timestamp ts; 
	java.util.Date utilDate; 
	ts.setTime(utilDate.getTime());

mysql数据库中的日期时间

  • NOW()、SYSDATE()函数以`'YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中。
    比如:select NOW(),SYSDATE();
  • CURDATE()、CURRENT_DATE以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
    比如:SELECT CURDATE(),CURRENT_DATE;
  • CURTIME()、CURRENT_TIME以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。
    比如:SELECT CURRENT_TIME(),CURRENT_TIME;
    参考文章:
    https://blog.csdn.net/weixin_42700628/article/details/93069011
    https://www.cnblogs.com/vicosong/articles/9321362.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值