使用日期而不是时间戳

时间:2014-05-06 14:41:36

标签: java date

我的代码:

    Calendar calendar = DateProvider.getCalendarInstance(TimeZone.getTimeZone("GMT"));
    calendar.setTime(date);
    calendar.set(Calendar.YEAR, 1970);
    calendar.set(Calendar.MONTH, Calendar.JANUARY);
    calendar.set(Calendar.DATE, 1);
    date = calendar.getTime();
    Timestamp epochTimeStamp = new Timestamp(date.getTime());

我想在这种情况下消除使用时间戳,如何在不使用java.sql.Timestamp的情况下使用epochTimeStamp实现相同的功能?我需要格式与我使用时间戳相同。

3 个答案:

答案 0 :(得分:1)

由于您需要String代表Date,然后使用SimpleDateFormatDate对象转换为String

Calendar calendar = ...
//...
date = calendar.getTime();
Timestamp epochTimeStamp = new Timestamp(date.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
try {
    System.out.println(sdf.format(date));
    System.out.println(sdf.format(epochTimeStamp));
} catch (Exception e) {
    //handle it!
}

从您的示例中,打印

01/01/1970 09:21:18
01/01/1970 09:21:18

答案 1 :(得分:1)

这为您提供与TimeStamp相同格式的纪元时间:

public class FormatDate {

    public static void main(String[] args) {

        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd kk:mm:ss:SSS");
        LocalDateTime datetime = LocalDateTime.of(1970, 1, 1, 0, 0);
        System.out.println(datetime.format(format));
    }
}

答案 2 :(得分:0)

在Java中表示日期时间对象的另一种方法是使用Joda Time库。

import org.joda.time.LocalDate;
...

 LocalDate startDate= new LocalDate();//"2014-05-06T10:59:45.618-06:00");
 //or DateTime startDate = new DateTime ();// creates instance of current time 

 String formatted = 
    startDate.toDateTimeAtCurrentTime().toString("MM/dd/yyy HH:mm:ss");

有几种方法可以使用这些库进行格式化,设置和获取Time,这比使用JDK Date和Calendar库更可靠。这些也将在hibernate / JPA中持续存在。如果没有别的,这有希望给你选择。