如何重新格式化Java Time类的时间

时间:2013-04-17 07:22:50

标签: java sqlite date format date-format

我搜索了有关格式化时间的主题,但这些都是关于Date类或DateTime的。我正在使用Time类。我创造了时间:

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(我这样做的原因是我会根据日期搜索数据库,因此更容易比较该格式的时间)

我该如何转换它?

3 个答案:

答案 0 :(得分:2)

试试这个:

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

修改

smttsp 建议将其存储为时间戳更有效

答案 1 :(得分:1)

要将java.util.Date转换为String,您应该考虑java.text.SimpleDateFormat。

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

passing Date parameter to create date range query < - 在答案中有示例如何创建此类查询。

答案 2 :(得分:0)

有点晚了但是如果你正在按时工作并且需要进行比较或排序,最好的方法是使用Unix时间戳。它从 1-Jan-1970 00:00:00 开始,每秒递增1。

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

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

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