在Java中String和Date、Timestamp之间的转换

一、String与Date(java.util.Date)互转

  1.1 String -> Date

String dateStr = "// ::";
    Date date = new Date();
   //注意format的格式要与日期String的格式相匹配
   DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   try {
     date = sdf.parse(dateStr);
      System.out.println(date.toString());
    } catch (Exception e) {
      e.printStackTrace();
    }
 String dateStr = "2010/05/04 12:34:23";
 Date date = new Date();
 //注意format的格式要与日期String的格式相匹配
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 try {
  date = sdf.parse(dateStr);
  System.out.println(date.toString());
 } catch (Exception e) {
  e.printStackTrace();
 } 

  1.2 Date -> String

日期向字符串转换,可以设置任意的转换格式format

String dateStr = "";
   Date date = new Date();
   //format的格式可以任意
    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");
    try {
      dateStr = sdf.format(date);
     System.out.println(dateStr);
      dateStr = sdf.format(date);
      System.out.println(dateStr);
    } catch (Exception e) {
      e.printStackTrace();
    }
 String dateStr = "";
 Date date = new Date();
 //format的格式可以任意
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 DateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");
 try {
  dateStr = sdf.format(date);
  System.out.println(dateStr);
  dateStr = sdf2.format(date);
  System.out.println(dateStr);
 } catch (Exception e) {
  e.printStackTrace();
 } 

 二、String与Timestamp互转

  2.1 String ->Timestamp

使用Timestamp的valueOf()方法

Timestamp ts = new Timestamp(System.currentTimeMillis());
    String tsStr = "-- ::";
     try {
       ts = Timestamp.valueOf(tsStr);
       System.out.println(ts);
    } catch (Exception e) {
      e.printStackTrace();
    }
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 String tsStr = "2011-05-09 11:49:45";
 try {
  ts = Timestamp.valueOf(tsStr);
  System.out.println(ts);
 } catch (Exception e) {
  e.printStackTrace();
 } 

注:String的类型必须形如: yyyy-mm-dd hh:mm:ss[.f...] 这样的格式,中括号表示可选,否则报错!!!

如果String为其他格式,可考虑重新解析下字符串,再重组~~

2.2 Timestamp -> String

使用Timestamp的toString()方法或者借用DateFormat

Timestamp ts = new Timestamp(System.currentTimeMillis());
    String tsStr = "";
    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    try {
      //方法一
      tsStr = sdf.format(ts);
     System.out.println(tsStr);
     //方法二
    tsStr = ts.toString();
      System.out.println(tsStr);
    } catch (Exception e) {
     e.printStackTrace();
   }
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 String tsStr = "";
 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 try {
  //方法一
  tsStr = sdf.format(ts);
  System.out.println(tsStr);
  //方法二
  tsStr = ts.toString();
  System.out.println(tsStr);
 } catch (Exception e) {
  e.printStackTrace();
 } 

很容易能够看出来,方法一的优势在于可以灵活的设置字符串的形式。

三、Date( java.util.Date )和Timestamp互转

声明:查API可知,Date和Timesta是父子类关系

  3.1 Timestamp -> Date

Timestamp ts = new Timestamp(System.currentTimeMillis());
   Date date = new Date();
   try {
     date = ts;
      System.out.println(date);
    } catch (Exception e) {
     e.printStackTrace();
    }
 Timestamp ts = new Timestamp(System.currentTimeMillis());
 Date date = new Date();
 try {
  date = ts;
  System.out.println(date);
 } catch (Exception e) {
  e.printStackTrace();
 }

很简单,但是此刻date对象指向的实体却是一个Timestamp,即date拥有Date类的方法,但被覆盖的方法的执行实体在Timestamp中。

  3.2 Date -> Timestamp

父类不能直接向子类转化,可借助中间的String~~~~

java.sql.Date 只存储日期数据不存储时间数据
// 会丢失时间数据
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
//可以这样来处理
preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
 //想要得到完整的数据,包括日期和时间,可以这样
java.util.Date d = resultSet.getTimestamp(1);
//这样处理更合适一些,可以避免一些潜在Timestamp 问题
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());

自己补的话,这样的话:

往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date对象的long值,再以这个long值 构造一个Timestamp对象 存进数据库中。

从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个java.util.Date对象,这样就可以对这个Date对象操作了。不如说 new SimpleTimeFormat("yyyyy-MM-dd HH:mm:ss").format()等等

(0)

相关推荐

  • Java中Date与String相互转换的方法

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

  • 详解Java中格式化日期的DateFormat与SimpleDateFormat类

    DateFormat 1. DateFormat 介绍 DateFormat 的作用是 格式化并解析"日期/时间".实际上,它是Date的格式化工具,它能帮助我们格式化Date,进而将Date转换成我们想要的String字符串供我们使用 不过DateFormat的格式化Date的功能有限,没有SimpleDateFormat强大:但DateFormat是SimpleDateFormat的父类.所以,我们先对DateFormat有个整体了解,然后再学习SimpleDateFormat.

  • java8中新的Date和Time详解

    新Date类和Time类背后的设计原则: 不可变类 java8之前,Date类都是可变类.当我们在多线程环境下使用它,编程人员应该确认Date对象的线程安全.Java8的Date和Time API提供了线程安全的不可变类.编程人员不用考虑并发的问题. 领域模型驱动设计方法 新的日期和时间的类别遵循"域驱动设计".对于开发者来说,理解方法和类的功能是很容易的. 接下来让我们来看看新Date和Time API: 1.java.time.LocalDate: LocalDate只提供日期不提

  • Java如何获取Date的“昨天”与“明天”示例代码

    前言 相信大家在java中用到的最多的时间类莫过于 java.util.Date了,由于Date类中将getYear() , getMonth()等获取年.月.日的方法都废弃了,所以本文的问题要借助于Calendar来实现了,下面来直接看示例代码吧. 使用日历类:Calendar @Test public void dateTest() { Date today = new Date(); for(int i=0;i<10;i++) { today = yesterday(today); Sys

  • Java多线程编程中使用DateFormat类

    DateFormat 类是一个非线程安全的类.javadocs 文档里面提到"Date formats是不能同步的. 我们建议为每个线程创建独立的日期格式. 如果多个线程同时访问一个日期格式,这需要在外部加上同步代码块." 以下的代码为我们展示了如何在一个线程环境里面使用DateFormat把字符串日期转换为日期对象.创建一个实例来获取日期格式会比较高效,因为系统不需要多次获取本地语言和国家. public class DateFormatTest { private final Da

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • java string 转date方法如何实现

    针对JSON 返回String 类型 两次格式化就行了,例如: Java代码 复制代码 代码如下: String s = "2012-08-25"; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年M月d日"); try { System.out.println(sdf2.f

  • Java中Date类和Calendar类的常用实例小结

    前言 写后台程序的时候,经常需要存储当前服务器的时间戳,使用时间戳也很方便,客户端和服务器端都可以根据自己的需求做各自的转换 在php里,获取当前时间戳使用time()函数,格式化输出通过Date()函数即可,Java里相对复杂一些,这里简单介绍一下 Java语言中的Calendar,Date,DateFormat组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分,所有的开发者都应该能计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象 获取UNIX时间戳

  • java获取Date时间的各种方式汇总

    java获取Date时间的各种方式为大家分享如下 常用的时间获取方式 public class DateUtils { /** * 获取时间戳 * 输出结果:1438692801766 */ @Test public void getTimeStamp() { Date date = new Date(); long times = date.getTime(); System.out.println(times); //第二种方法: new Date().getTime(); } /** *

  • java8 LocalDate LocalDateTime等时间类用法实例分析

    本文实例讲述了java8 LocalDate LocalDateTime等时间类用法.分享给大家供大家参考,具体如下: 这篇文章主要是java8中新的Date和Time API的实战.新的Date和Time类是Java开发者社区千呼万唤始出来的.Java8 之前存在的Date类一直都受人诟病,很多人都会选择使用第三方的date库joda-time.Java8中的date和time api是jodatime的作者参与开发的,实现了JSR310的全部内容.这些新的api都在包java.time下.

  • 学习Java的Date、Calendar日期操作

    本文介绍了Java开发过程中日期相关操作,分享的代码如下: package jse; import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * 常用日期操作 * * @a

  • java_时间戳与Date_相互转化的实现代码

    1.时间戳的定义 时间戳是指文件属性里的创建.修改.访问时间. 数字时间戳技术是数字签名技术一种变种的应用.在电子商务交易文件中,时间是十分重要的信息.在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容.数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护. 时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分: 需加时间戳的文件的摘要(dig

  • java Date获取年月日时分秒的实现方法

    java Date获取年月日时分秒的实现方法 package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; public class Test { public void getTimeByDate(){ Date date = new Date(); DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日

随机推荐