有 Java 编程相关的问题?

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

转换java。util。Java中时间戳的日期默认格式

java的默认格式。util。日期类似于“2013年5月27日星期一11:46:15”。如何将其转换为时间戳并以秒为单位计算相同时间与当前时间之间的差异

java.util.Date date= new java.util.Date();
Timestamp ts_now = new Timestamp(date.getTime());

上面的代码给出了当前的时间戳。但是,我不知道如何找到上面字符串的时间戳


共 (5) 个答案

  1. # 1 楼答案

    您可以使用Calendar类来转换Date

    public long getDifference()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
        Date d = sdf.parse("Mon May 27 11:46:15 IST 2013");
    
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        long time = c.getTimeInMillis();
        long curr = System.currentTimeMillis();
        long diff = curr - time;    //Time difference in milliseconds
        return diff/1000;
    }
    
  2. # 2 楼答案

    爪哇。时间

    我提供的是现代的答案。Timestamp类的设计总是很糟糕,这是在已经设计糟糕的Date类之上的一次真正的攻击。这两类课程现在都早已过时。不要使用它们

    当有人问这个问题时,您需要一个Timestamp来向SQL数据库发送时间点。自从JDBC 4.2之后,情况就不再是这样了。假设您的数据库需要一个timestamp with time zone(建议使用真正的时间戳),请将OffsetDateTime传递给它

    在此之前,我们需要克服示例字符串的一个真正问题,Mon May 27 11:46:15 IST 2013:时区缩写IST可能指爱尔兰夏季时间、以色列标准时间或印度标准时间(我甚至读到Java可能将其解析为大西洋/雷克雅未克时区-冰岛标准时间?)为了控制解释,我们将首选时区传递给用于解析的格式化程序

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendPattern("EEE MMM dd HH:mm:ss ")
                .appendZoneText(TextStyle.SHORT, Set.of(ZoneId.of("Asia/Kolkata")))
                .appendPattern(" yyyy")
                .toFormatter(Locale.ROOT);
        String dateString = "Mon May 27 11:46:15 IST 2013";
        OffsetDateTime dateTime = formatter.parse(dateString, Instant::from)
                .atOffset(ZoneOffset.UTC);
        System.out.println(dateTime);
    

    这个片段打印:

    2013-05-27T06:16:15Z

    这是字符串的UTC等效值(假设IST是印度标准时间)。使用PreparedStatement.setObject方法之一(而不是setTimestamp)将OffsetDateTime传递到数据库

    How can I convert this into timestamp and calculate in seconds the difference between the same and current time?

    在java中,以秒为单位计算差异非常自然。时间:

        long differenceInSeconds = ChronoUnit.SECONDS
                .between(dateTime, OffsetDateTime.now(ZoneOffset.UTC));
        System.out.println(differenceInSeconds);
    

    刚才跑步的时候我得到:

    202213260

    链接:Oracle tutorial: Date Time解释如何使用java。时间到了

  3. # 3 楼答案

    最好的

    String str_date=month+"-"+day+"-"+yr;
    DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
    Date date = (Date)formatter.parse(str_date); 
    long output=date.getTime()/1000L;
    String str=Long.toString(output);
    long timestamp = Long.parseLong(str) * 1000;
    
  4. # 4 楼答案

    你可以用

      long startTime = date.getTime() * 1000000;;
      long estimatedTime = System.nanoTime() - startTime;
    

    在nano中获得时间

    Java Docs

  5. # 5 楼答案

    您可以使用DateFormat(java.text.*)解析日期:

    DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
    Date d = df.parse("Mon May 27 11:46:15 IST 2013")
    

    您必须更改区域设置以匹配自己的区域设置(这样您将得到10:46:15)。然后,您可以使用相同的代码将其转换为时间戳