如何在MySQL中存储java.util.Date对象,精确到一秒钟?

时间:2013-01-13 18:12:55

标签: mysql

我知道这是一个常见问题,但我找不到如何在MySQL中存储java.util.Date对象。

有可能吗?如果不是你需要什么样的解决方案,因为我需要在MySQL数据库中存储这个准确的时间。

5 个答案:

答案 0 :(得分:0)

public static void main(String[] args) {
        Date date = new Date() ;
        System.out.println(date);
        // or use calendar
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2013);
        cal.set(Calendar.MONTH, 1);
        cal.set(Calendar.DATE, 13);
        cal.set(Calendar.HOUR, 23);
        cal.set(Calendar.MINUTE, 52);
        cal.set(Calendar.SECOND, 10);
        date = cal.getTime();
}

为您提供Sun Jan 13 23:48:59 IST 2013

答案 1 :(得分:0)

您可以使用SimpleDateFormat:

SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
System.out.println(dateFormat.format(new Date()));

如果您,我怀疑,想要将字符串转换为日期对象,那么您仍然可以使用SimpleDateFormat:

SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
Date d = dateFormat.parse("2011-02-21 23:22:10");

答案 2 :(得分:0)

在大多数情况下,您不应使用Date对象,java.util.Dat e不是不可变的; 更好的是使用原始long,它将日期存储为utc时间。 (自2012年1月1日午夜以来的毫秒数)这与当地时间,白天节省无关。等

您通过方法long从临时getTimestamp()对象获取Date值。 (或直接或间接来自GregorianCalendar

从长utc时间戳,您可以轻松创建所需的任何Date对象(例如在DB中)。

如果你需要当地时间,事情会变得复杂得多。因此,最好的建议是仅将本地时间用于显示(例如UI)目的,并在显示之前立即转换为本地时间。最好不要在当地时间存储日期)

答案 3 :(得分:-1)

查看Calendar课程。

只需致电Calendar.getInstance()以获取实例,然后您可以使用get(Calendar.YEAR);获取年份,get(Calendar.DAY);获取当天,依此类推。

您可以使用set()方法以类似的方式设置时间。

如果要将其转换为日期对象,请使用getTime();方法,如果要将日期格式化为字符串,请查看SimpleDateFormat

作为一般例子:

Calendar c = Calendar.getInstance();
c.set(2012, 11, 1, 10, 10); //Sets c to 10:10, 1st December 2012
Date date = c.getTime(); //If you want the calendar object as a date
int day = c.get(Calendar.DAY); //Get the current day in the calendar as an integer
String format = new SimpleDateFormat("HH:mm:ss DD-MM-YYYY").format(c.getTime()); //Print date as a string

您还可以使用SimpleDateFormat对象来解析日期,如下所示:

Date d = new SimpleDateFormat("HH:mm:ss DD-MM-YYYY").parse("10:10:00 01-12-12");

如果您不止一次使用SimpleDateFormat,那么最好将其作为单独的变量而不是继续重新创建。

答案 4 :(得分:-2)

class Date {
    int year;
    int month;
    int day;

    int hour;
    int minute;

    public Date(int year, int month, int day, int hour, int minute){
        this.year = year;
        this.month = month;
        this.day = day;
        this.hour = hour;
        this.minute = minute;
    }

}

现在您可以创建此实例,并将其传递。此外,您可以创建getter / setter或toString函数。