106

如何创建日期为 23/09/2007 的时间戳?

4

8 回答 8

159

我猜Timestamp你的意思是java.sql.Timestamp。你会注意到这个类有一个接受long参数的构造函数。您可以使用DateFormat类解析它:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
于 2009-06-10T11:19:54.707 回答
130

那这个呢?

java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2007-09-23 10:10:10.0");
于 2009-06-10T11:38:26.713 回答
18

时间戳是什么意思?如果您的意思是自 Unix 纪元以来的毫秒数:

GregorianCalendar cal = new GregorianCalendar(2007, 9 - 1, 23);
long millis = cal.getTimeInMillis();

如果你想要一个实际的 java.sql.Timestamp 对象:

Timestamp ts = new Timestamp(millis);
于 2009-06-10T11:26:30.683 回答
14
于 2015-10-27T08:44:13.467 回答
6

您还可以执行以下操作:

// untested
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 23);// I might have the wrong Calendar constant...
cal.set(Calendar.MONTH, 8);// -1 as month is zero-based
cal.set(Calendar.YEAR, 2009);
Timestamp tstamp = new Timestamp(cal.getTimeInMillis());
于 2009-06-10T11:41:33.663 回答
4

根据API,不推荐使用接受年、月等的构造函数。相反,您应该使用接受 long 的构造函数。您可以使用Calendar实现来构造所需的日期并以 long 形式访问时间表示,例如使用getTimeInMillis方法。

于 2009-06-10T11:23:08.710 回答
1

为了完整起见,还有Joda-Time 2.5 版及其DateTime类的解决方案:

new Timestamp(new DateTime(2007, 9, 23, 0, 0, DateTimeZone.forID( "America/Montreal" )).getMillis())
于 2014-10-13T07:39:48.413 回答
-1

更一般的答案是 import java.util.Date,然后当您需要将 a 设置为timestamp等于当前日期时,只需将其设置为new Date()

于 2012-11-28T02:02:26.950 回答