I have the following Long
variable holding epoch value in seconds, which I\'m trying to convert into a Date
.
val seconds = 1341855763000
Your value : 1341855763000 is not in seconds, it is in milliseconds. The current timestamp is : new Date().getTime() => 1598612990351 Same number of digits than : 1341855763000
If you multiply 1341855763000 by 1000 (as you say), it gives the year : 44491 after JC :D Have a good day
The value you have is not in seconds but in milliseconds. Remove the "seconds to millis" conversion.
val milliSeconds = 1341855763000
val date = Date(milliSeconds)
The output is way off than I expected. Where did I go wrong?
Actual: Wed Sep 19 05:26:40 GMT+05:30 44491
Expected: Monday July 9 11:12:43 GMT+05:30 2012
The value is already in milliseconds
and by using TimeUnit.SECONDS.toMillis(seconds)
you are wrongly multiplying it by 1000
.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant instant = Instant.ofEpochMilli(1341855763000L);
System.out.println(instant);
}
}
Output:
2012-07-09T17:42:43Z
java.util.Date
:import java.util.Date;
public class Main {
public static void main(String[] args) {
System.out.println(new Date(1341855763000L));
}
}
Output:
Mon Jul 09 18:42:43 BST 2012
I recommend you switch from the outdated and error-prone java.util
date-time API and SimpleDateFormat
to the modern java.time
date-time API and the corresponding formatting API (package, java.time.format
). Learn more about the modern date-time API from Trail: Date Time.
I think your time is actually in milliseconds. If I convert 1341855763000
using this website it gives me your expected time and this as well:
fun main() {
val millis = 1341855763000
val date = Date(millis)
println(date)
}
Alternatively, you can also use seconds:
fun main() {
val seconds = 1341855763L
val date = Date(TimeUnit.SECONDS.toMillis(seconds))
println(date)
}
Just divide by 1000
.