有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用时间戳构造函数

我想在Java中为Timestamp类使用默认构造函数,但Eclipse指出它已被弃用。这是构造器:

Timestamp myDate = new Timestamp(2014, 3, 24, 0, 0, 0 ,0);

Eclipse建议使用Timestamp(long time)默认构造函数,但我不知道如何使用它


共 (5) 个答案

  1. # 1 楼答案

    创建一个java.util.Date实例(不要与java.sql.Date混淆),并将其时间(毫秒)作为参数传递给Timestamp。下面是一个例子:

    Timestamp now = new Timestamp(new java.util.Date().getTime());
    

    还有其他方法可以创建java.util.Date对象实例:

    • 使用Calendar

      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.HOUR, 0);
      calendar.set(Calendar.MINUTE, 0);
      calendar.set(Calendar.SECOND, 0);
      calendar.set(Calendar.MILLISECOND, 0);
      Date today = calendar.getTime();
      Timestamp now = new Timestamp(today.getTime());
      
    • 使用DateFormat或其子类SimpleDateFormat

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
      Date date = sdf.parse("2014/3/24");
      Timestamp today = new Timestamp(date.getTime());
      
  2. # 2 楼答案

    下一个method

    int myYear = 2014;
    int myMonth = 3;
    int myDay = 24;
    Timestamp ts = Timestamp.valueOf(String.format("%04d-%02d-%02d 00:00:00", 
                                                    myYear, myMonth, myDay));
    

    使用JSR 310: Date and Time API(在JavaSE8release中介绍):

    java.sql.Timestamp ts = java.sql.Timestamp.valueOf(
            java.time.LocalDate.of(myYear, myMonth, myDay).atStartOfDay()
    );
    
  3. # 3 楼答案

    您可以使用GregorianCalendar类

    GregorianCalendar cal = new GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second);
    Timestamp ts = new Timestamp(cal.getTimeInMillis());
    

    如果您有以下格式的字符串,则还可以执行以下操作:

    Timestamp ts = Timestamp.valueOf("2014-01-01 00:00:00");
    
  4. # 4 楼答案

    this answer中所述,您可以使用DateFormat类对其进行解析:

    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    Date date = dateFormat.parse("23/09/2007");
    long time = date.getTime();
    new Timestamp(time);
    
  5. # 5 楼答案

    为特定日期设置日历,然后在时间戳的构造函数中使用以毫秒为单位的时间:

    new Timestamp(new GregorianCalendar(2014, 3, 24).getTimeInMillis());