如何将TimeStamp转换为Java中的date?

在java中计数后,如何将'timeStamp'转换为date

我目前的代码如下:

 public class GetCurrentDateTime { public int data() { int count = 0; java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); java.sql.Date date = new java.sql.Date(timeStamp.getTime()); System.out.println(date); //count++; try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", ""); PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()"); ResultSet result = statement.executeQuery(); while (result.next()) { // Do something with the row returned. count++; //if the first col is a count. } } catch (Exception exc) { System.out.println(exc.getMessage()); } return count; } } 

这是我的数据库: 在这里输入图像说明

这里我得到的输出是2012-08-07 0,但等价的查询返回3.为什么我得到0?

只需使用邮票的getTime值作为参数创build一个新的Date对象

下面是一个例子(我使用当前时间的示例时间戳):

  Timestamp stamp = new Timestamp(System.currentTimeMillis()); Date date = new Date(stamp.getTime()); System.out.println(date); 
 // timestamp to Date long timestamp = 5607059900000; //Example -> in ms Date d = new Date(timestamp ); // Date to timestamp long timestamp = d.getTime(); //If you want the current timestamp : Calendar c = Calendar.getInstance(); long timestamp = c.getTimeInMillis(); 

只是:

 Timestamp timestamp = new Timestamp(long); Date date = new Date(timestamp.getTime()); 

首先,你没有利用使用PreparedStatement的优势。 我首先build议你修改你的PreparedStatement如下:

 PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?") 

然后可以使用statement.setXX(param_index, param_value)来设置相应的值。 要转换为timestamp ,请查看以下javadoc:

了PreparedStatement.setTimestamp()
时间戳

希望这可以帮助!

new Date(timestamp.getTime())应该可以工作,但是新的Java 8方式(可能更优雅,更安全,并且帮助引导你使用新的时间类)是调用Date.from(timestamp.toInstant())

(不要依赖Timestamp本身是Date一个实例;请参阅另一个答案的注释中的解释 。)

在Android中它非常简单。只需使用Calender类来获得currentTimeMillis。

 Timestamp stamp = new Timestamp(Calendar.getInstance().getTimeInMillis()); Date date = new Date(stamp.getTime()); Log.d("Current date Time is " +date.toString()); 

在Java中使用System.currentTimeMillis()来获取当前的时间戳

不知道您想要在查询中select什么,但请记住,不带参数的UNIX_TIMESTAMP()将返回现在的时间。 你应该提供一个有效的时间作为参数,或者改变条件。

编辑:

下面是一个基于问题的时间范围查询的例子:

 PreparedStatement statement = con .prepareStatement("select * from orders where status='Q' AND date > ?"); Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000"); statement.setDate(1, new java.sql.Date(date.getTime())); 

编辑:时间戳列

在时间戳的情况下使用java.sql.Timestamp和PreparedStatement.setTimestamp() ,即:

 PreparedStatement statement = con .prepareStatement("select * from orders where status='Q' AND date > ?"); Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000"); Timestamp timestamp = new Timestamp(date.getTime()); statement.setTimestamp(1, timestamp); 
  Timestamp tsp = new Timestamp(System.currentTimeMillis()); java.util.Date dateformat = new java.util.Date(tsp.getTime()); 

我觉得有必要回应,因为其他答案似乎是时区不可知的,真实世界的应用程序是不能承受的。 当时间戳和JVM使用不同的时区时,要使时间戳到最新的转换正确,可以使用Joda时间的LocalDateTime(或Java 8中的LocalDateTime),如下所示:

 Timestamp timestamp = resultSet.getTimestamp("time_column"); LocalDateTime localDateTime = new LocalDateTime(timestamp); Date trueDate = localDateTime.toDate(DateTimeZone.UTC.toTimeZone()); 

下面的示例假定时间戳是UTC(数据库通常是这种情况)。 如果您的时间戳在不同的时区,请更改toDate语句的时区参数。

我一直在寻找这个很长一段时间,事实certificate, Eposh转换器很容易:

 long epoch = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000; 

或者相反:

 String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000)); 
 String timestamp=""; Date temp=null; try { temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(getDateCurrentTimeZone(Long.parseLong(timestamp))); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } int dayMonth=temp.getDate(); int dayWeek=temp.getDay(); int hour=temp.getHours(); int minute=temp.getMinutes(); int month=temp.getMonth()+1; int year=temp.getYear()+1900; 
 DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Date fecha = getDateInTimestamp();