将java.util.date默认格式转换为Java中的Timestamp

时间:2013-05-27 16:40:56

标签: java date time timestamp java.util.date

java.util.date的默认格式是这样的“Mon May 27 11:46:15 IST 2013”​​。如何将其转换为时间戳并以秒计算相同和当前时间之间的差异?

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

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

5 个答案:

答案 0 :(得分:11)

您可以使用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;
}

答案 1 :(得分:8)

最好的一个

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;

答案 2 :(得分:0)

您可以使用

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

获得纳米时间。

Java Docs

答案 3 :(得分:0)

您可以使用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)。然后,您可以使用相同的代码将其转换为时间戳。

答案 4 :(得分:0)

java.time

我正在提供现代答案。 view.layer.cornerRadius = 25 类的设计总是很差,这是在已经设计不良的Timestamp类之上的一个真正的黑客。这两个类现在早已过时。不要使用它们。

询问问题时,您需要一个Date才能将时间点发送到SQL数据库。从JDBC 4.2开始,情况不再如此。假设您的数据库需要一个Timestamp(建议使用真实时间戳记),则将其传递给timestamp with time zone

在执行此操作之前,我们需要克服示例字符串OffsetDateTime(时区缩写)的实际麻烦。 Mon May 27 11:46:15 IST 2013可能表示爱尔兰的夏令时,以色列的标准时间或印度的标准时间(我什至读过Java可能将其解析为大西洋/雷克雅未克时区-冰岛标准时间?)为了控制解释,我们通过了我们首选的时区到我们用于解析的格式化程序。

IST

此代码段打印:

  

2013-05-27T06:16:15Z

这是您字符串的UTC等效项(假设IST适用于印度标准时间)。使用 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); 方法之一(而不是OffsetDateTime)将PreparedStatement.setObject传递到数据库。

  

如何将其转换为时间戳并以秒为单位计算   相同时间与当前时间有何不同?

java.time非常自然地计算出秒差:

setTimestamp

刚运行时我得到了:

  

202213260

链接: Oracle tutorial: Date Time解释了如何使用java.time。