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());
上面的代码给出了当前的时间戳。但是,我不知道如何找到上述字符串的时间戳。
答案 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;
获得纳米时间。
答案 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)
我正在提供现代答案。 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。