我的代码:
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实现相同的功能?我需要格式与我使用时间戳相同。
答案 0 :(得分:1)
由于您需要String
代表Date
,然后使用SimpleDateFormat
将Date
对象转换为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中持续存在。如果没有别的,这有希望给你选择。