java Date类型。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Date类型。相关的知识,希望对你有一定的参考价值。

我从数据库中取出一个Date类型的数据,我想要的是
现在时间 减去 取出来的时间,然后做相应的处理,我能够得到两个日期的秒数差。
注意,这儿还需要考虑时区,若没有的话,得到的时间不正确。

Data类型是日期类型,通常是为了获取某些特定的日期或者转换日期的格式为字符串。举例:
Date date = new Date();//定义一个当前日期,此时输出就是日期类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//创建格式日期类型
String str = sdf.format(date);//对创建的日期进行格式化输出。此时输出就是字符串日期类型
输出结果:2015--6-30 19:17:32。
参考技术A 一、调用Date类里的gettime方法取得一个从取出的日期到时间点A的毫秒数。

二、调用系统函数currentTimeMillis() ,返回一个现在时间到时间点A的毫秒数。

三、你会做了

时间点A为 1970.1.1 零时零分零秒
参考技术B Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();

Date dbDate=数据库取得的结果;
c1.setTime(dbDate);

Date nowDate=new Date();
c2.setTime(nowDate);

//秒数差
long s=c2.getTimeInMillis()-c1.getTimeInMillis();本回答被提问者和网友采纳
参考技术C package date;

import java.util.Date;

public class DateTest

/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException
Date date1 = new Date();
long time1 = date1.getTime();
System.out.println("从数据库取出的时间是:" + time1);
Thread.sleep(100);
Date date2 = new Date();
long time2 = date2.getTime();
System.out.println("现在的时间是:" + time2);
long time = time2 - time1;
System.out.println("时间差是:" + time);//单位为毫秒,你可以再将其转化



如有疑问可以联系我

java string类型怎么转化成date类型

String stid=request.getParameter("stid");
String stname=request.getParameter("stname");
String stsex=request.getParameter("stsex");
String stbirthday=request.getParameter("stbirthday");
String clid=request.getParameter("clid");
new StudentManager().insert(new Student(Integer.parseInt(stid), stname, Integer.parseInt(stsex),????, clid));

string类型转化为date类型:

方法一,Date date=new Date("2018-9-30");

方法二,String =(new SimpleDateFormat("格式")).format(Date); 

方法三,SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");String dstr="2008-4-24";java.util.Date date=sdf.parse(dstr);

date类型转化为string类型:

方法一,SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");java.util.Date date=new java.util.Date();String str=sdf.format(date);

方法二,Date = (new SimpleDateFormat("格式")).parse(String); 

SimpleDateFormat 语法:
G -- 年代标志符,   y -- 年, M -- 月, d -- 日,  h -- 时 12小时制 (1~12), H -- 时 24小时制 (0~23) ,  m -- 分,s -- 秒,S -- 毫秒  , E -- 星期, D -- 一年中的第几天 ,F -- 一月中第几个星期几  ,w -- 一年中第几个星期 ,W -- 一月中第几个星,  a 上午 / 下午 标记符 ,    k 时 在一天中 (1~24),  K 时 在上午或下午 (0~11),   z 时区  。








参考技术A

代码如下:

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));    

把data转换为string类型可以转换为“"yyyy-MM-dd HH:mm:ss”格式和“yyyy年MM月dd日 HH:mm:ss”的样式。

扩展资料:

可以很便捷的使用正则表达式来进行分隔。“\\s”就表示空格,还有如”',”\\t”,”\\r”,”\\n”.

在JDK6中,这个方法只会在标识现有字符串的字符数组上 给一个窗口来表示结果字符串,但是不会创建一个新的字符串对象。如果需要创建个新字符串对象,可以这样在结果后面+一个空的字符串。

这么写的话就会创建一个新的字符数组来表示结果字符串。同时,这么写也有一定的几率让你的代码跑的更快,因为垃圾回收器会吧没有在使用的大字符串回收而留下子字符串。

Oracle JDK7中的substring()方法会创建一个新的字符数组,而不用之前存在的。看看这张图就会明白substring()方法在JDK6和JDK7中的区别。

String vs StringBuilder:StringBuilder是可变的,这就意味你在创建对象之后还可以去修改它的值。StringBuilder vs StringBuffer:StringBuffer是同步的,意味着它是线程安全的,但是就会比StringBuilder慢些。

在Python编程中,只需要用字符串去乘以一个数字就可以 搞定了,那在Java编程中,我们可以使用来自Apache Commons Lang包中的StringUtils类的repeat()方法。

参考资料:string类  百度百科

Date  百度百科

参考技术B

Java SimpleDateFormat类是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化、解析、和规范化。

解决步骤如下

    String format = "yyyy-MM-dd";//日期格式

    String curDate= "2018-05-22";//当前日期

    Date date = SimpleDateFormat(format).parse(str);

参考技术C /**
* 根据一段日期时间字符串,转换得到日期时间对象。日期时间字符串可以是以下格式:
* 1. yyyy-MM
* 2. yyyy-MM-dd
* 3. HH:mm
* 4. HH:mm:ss
* 5. yyyy-MM-dd HH:mm
* 6. yyyy-MM-dd HH:mm:ss
*
* @param str
* 日期时间字符串
* @return 日期时间对象
*/
public static Date parseDate(String str)
// 没有输入值
if (str == null)
return null;
str = str.trim();
if (str.length() == 0)
return null;

str = str.replace('/', '-');
str = str.replace('\\', '-');

// yyyy-MM-dd HH:mm:ss
String[] sa = str.split("\\s+");
if (sa == null || sa.length == 0)
return null;

// 年月日
String s1 = null;
// 时分秒
String s2 = null;

if (sa.length == 1)
// 可能是 年月日,也可能是 时分秒
if (sa[0].indexOf(":") > 0)
s2 = sa[0];
else
s1 = sa[0];



if (sa.length >= 2)
for (int i = 0; sa != null && i < 2 && i < sa.length; i++)
if (sa[i].indexOf(":") > 0 || s1 != null)
s2 = sa[i];
else
s1 = sa[i];




if (s1 == null)
s1 = "1900-01-01";
if (s2 == null)
s2 = "00:00:00";

int[] ymd = getYmd(s1);
int[] hms = getHms(s2);

Calendar cal = Calendar.getInstance();
cal.set(ymd[0], ymd[1] - 1, ymd[2], hms[0], hms[1], hms[2]);
return cal.getTime();


private static int[] getHms(String s2)
int[] hms = 0, 0, 0 ;
int nEnd = s2.indexOf(":");
if (nEnd < 0)
// 只有小时
// 第1个数字
hms[0] = LogicUtility.parseInt(s2, hms[0]);
return hms;


int nStart = 0;
// 时分秒
// 第1个数字
hms[0] = LogicUtility.parseInt(s2.substring(nStart, nEnd), hms[0]);
// 第2个数字
nStart = nEnd + 1;
if (nStart >= s2.length())
return hms;
nEnd = s2.indexOf(":", nStart);
if (nEnd < 0)
// 只有1个 -
hms[1] = LogicUtility.parseInt(s2.substring(nStart), hms[1]);
nEnd = s2.length();
else
hms[1] = LogicUtility.parseInt(s2.substring(nStart, nEnd), hms[1]);

// 第3个数字
nStart = nEnd + 1;
if (nStart >= s2.length())
return hms;
hms[2] = LogicUtility.parseInt(s2.substring(nStart), hms[2]);

return hms;


private static int[] getYmd(String s1)
int[] ymd = 1900, 1, 1 ;
int nEnd = s1.indexOf("-");
if (nEnd < 0)
// 只有小时
// 第1个数字
ymd[0] = LogicUtility.parseInt(s1, ymd[0]);
return ymd;


int nStart = 0;
// 年月日
// 第1个数字
ymd[0] = LogicUtility.parseInt(s1.substring(nStart, nEnd), ymd[0]);
// 第2个数字
nStart = nEnd + 1;
if (nStart >= s1.length())
return ymd;
nEnd = s1.indexOf("-", nStart);
if (nEnd < 0)
// 只有1个 -
ymd[1] = LogicUtility.parseInt(s1.substring(nStart), ymd[1]);
nEnd = s1.length();
else
ymd[1] = LogicUtility.parseInt(s1.substring(nStart, nEnd), ymd[1]);


// 第3个数字
nStart = nEnd + 1;
if (nStart >= s1.length())
return ymd;
ymd[2] = LogicUtility.parseInt(s1.substring(nStart), ymd[2]);

return ymd;


其中LogicUtility.parseInt的方法如下:

/**
* 得到传入的字符串字面表示的十进制整型数据,如果该字符串字面表示的不是数字,<br>
* 则取用默认整型数值
*
* @param strValue
* 字符串
* @param nDefaultValue
* 默认的整型数值
* @return 字面表示的十进制整型数据
*/
public static int parseInt(String strValue, int nDefaultValue)
// parse
return (int) parseDouble(strValue, (double) nDefaultValue);
参考技术D 首先确定你的字符串日期是什么格式的 按这个格式就可以转化 比如你的格式是年-月-日:
String fmt = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(fmt);
Date date = sdf.parse(stbirthday);

以上是关于java Date类型。的主要内容,如果未能解决你的问题,请参考以下文章

java中如何让datetime转换成date类型

Java中Date类型如何向前向后滚动时间,( 附工具类)

java中怎样把一个date类型转换成String类型?

一个很小的问题(java date类型存oracle数据库)

java Date类型。

数据库中 number date 类型 在java的封装类中 应该用啥类型?int 还是string?