2013-04-17 33 views
0

我搜索了关于格式化时间的主题,但这些都是关于Date类或DateTime的。我正在和Time课一起工作。我创建时间为:如何重新格式化Java的时间时间类

Time time = new Time(Time.getCurrentTimezone()) ; 
time.setToNow(); 
String berkay = time.toString(); 
System.out.println(berkay); 

当我执行它的输出是:

20130417T070525GMT(3,106,0,0,1366182325)

实际日期和时间是正确的(2013 -04-17 07:05:25)

但我需要将它转换为:20130417070525(我这样做的理由是我将根据日期搜索数据库,因此比较容易比较第格式)

我该如何转换它?

+0

如果您将时间存储为millis,则将比较容易比较。 – Ankit

+0

阅读java.text.SimpleDateFormat javadoc。 – Vitaly

+0

我们可以假设'java.sql.Time'吗? – MadProgrammer

回答

2

试试这个:

Time time = new Time(System.currentTimeMillis()) ; 
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); 
String date = df.format(time).toString(); 
System.out.println(date); 

编辑

但作为smttsp提出了更有效的将其存储为时间戳

+0

您也可以在调用'df.format()'时使用'Time'对象。 –

+0

@TedHopp是啊你的权利 – Stephan

+0

我试过了.Time time = new Time(Time.getCurrentTimezone()); \t \t \t time.setToNow(); \t \t \t \t \t \t \t \t \t SimpleDateFormat的DF =新的SimpleDateFormat( “YYYYMMDDHHMMSS”); \t \t \t String date = df.format(time).toString(); \t \t \t System.out.println(date); 但是异常...... :( – abidinberkay

1

要java.util.Date转换成字符串,你应该考虑java.text.SimpleDateFormat。

对于使用java.util.Date作为数据库查询的参数,您应该按原样传递日期而不将其转换为任何其他格式。

passing Date parameter to create date range query < - 在答案中有样本如何创建这样的查询。

+0

你的意思是采取参数作为日期(而不是字符串等..),所以我可以比较时间在SQL查询权? – abidinberkay

+0

如果你有一个日期类型的列 - 是的 – Vitaly

+0

好的谢谢你的兴趣 – abidinberkay

0

这有点迟,但如果您正在按时开展工作并且需要进行比较或排序,最好的方法是使用Unix时间戳。它从1970年1月1日00:00:00开始,每秒增加1。

这是一个很长的值(64位),在时间和空间上都非常有效。 Here是Unix时间戳转换的网站。

也20130417070525是14个字符串(至少15个字节,我猜)和1366182325是长(8字节)。所以去长期价值。 U可以这样得到它

Date myDate = new Date(); // current time  
myDate.getTime();   // converts it to specified format.