115

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

我目前的代码如下:

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?

4

16 回答 16

207

只需Date使用标记的getTime()值作为参数创建一个新对象。

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

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);
于 2012-08-07T04:29:11.527 回答
42
// 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();
于 2013-04-05T14:51:11.293 回答
10

只是:

Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());
于 2016-12-08T19:14:54.383 回答
8

我一直在寻找这个很久,结果证明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));
于 2017-04-15T11:04:35.777 回答
8
于 2018-02-05T01:03:17.073 回答
5

尝试使用这个 java 代码:

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
DateFormat f1 = new SimpleDateFormat("yyyy/MM/dd");
String d = f.format(date);
String d1 = f1.format(date);
System.out.println(d);
System.out.println(d1);
于 2018-02-04T13:59:42.990 回答
4

在 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() 获取当前时间戳

于 2014-09-04T12:14:55.567 回答
4

首先,您没有利用使用PreparedStatement. 我首先建议您修改PreparedStatement如下:

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

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

PreparedStatement.setTimeStamp()
时间戳

希望这可以帮助!

于 2012-08-07T04:48:08.920 回答
3

不确定您要在查询中选择什么,但请记住,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.TimestampPreparedStatement.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);
于 2012-08-07T04:40:53.373 回答
3

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

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

于 2015-06-18T21:05:08.710 回答
3

我觉得有必要做出回应,因为其他答案似乎与时区无关,而现实世界的应用程序无法承受。当时间戳和 JVM 使用不同的时区时,要使时间戳到日期的转换正确,您可以使用 Joda Time 的 LocalDateTime(或 Java8 中的 LocalDateTime),如下所示:

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

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

于 2016-07-13T12:03:02.173 回答
3
    Timestamp tsp = new Timestamp(System.currentTimeMillis());
   java.util.Date dateformat = new java.util.Date(tsp.getTime());
于 2015-12-21T16:03:08.820 回答
0
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;
于 2014-03-10T09:37:54.497 回答
0

假设你有一个预先存在的java.util.Date date

Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );
于 2018-03-22T16:51:36.543 回答
0

您可以使用此方法从特定区域的时间戳和时区获取日期。

public String getDayOfTimestamp(long yourLinuxTimestamp, String timeZone) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(yourLinuxTimestamp * 1000);
    cal.setTimeZone(TimeZone.getTimeZone(timeZone));
    Date date = cal.getTime();
}
于 2019-03-04T12:05:16.593 回答
-3
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date fecha = getDateInTimestamp(); 
于 2015-01-20T10:51:42.367 回答