- Date time unix timestamp java
- Create Date From Unix Timestamp in Java
- Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:
- > CHECK OUT THE COURSE
- 1. Introduction
- 2. Old Way (Before Java 8)
- 3. New Way (Java 8+)
- 4. Universal Solution With Instant
- 4.1. Normalizing Input for Instant
- 4.2. Local Time With LocalDateTime
- 5. Conclusion
- How to get the Unix timestamp in Java
- Instant
- System.currentTimeMillis()
- Date
- Conclusion
- How to get the Unix timestamp in Java
- You might also like.
Date time unix timestamp java
Java is a popular object oriented programming language. It is intended to let developers write once, run anywhere compiled Java code that run on all platforms that support Java without the need for recompilation. Java has java.time package that work with date and time. So with Java, we we can easily handle epoch or Unix timestamp conversion into human readable dates or can convert human readable dates to Unix timestamp.
Here we will explain Java classes and methods to get current epoch or Unix timestamp, convert timestamp to date and convert date to epoch or Unix timestamp.
Get current epoch or Unix timestamp in Java
We can get the current epoch or timestamp using Date class from Java. It will returns the current epoch in the number of seconds.
Date date = new Date();
long unixTime = date.getTime() / 1000L;
System.out.println(unixTime);
Convert epoch or Unix timestamp to human readable date in Java
We can convert the epoch or timestamp to readable date format using Java Date() class. The function formats and return epoch or timestamp to human readable date and time.
Date date = new Date(1585990763);
SimpleDateFormat format = new SimpleDateFormat(«yyyy-MM-dd HH:mm:ss»);
String myDate = format.format(date);
Output
2020-04-05:05:36::40
Convert date to epoch or unix timestamp in Java
We can convert human readable date to timestamp using Java Date class. The function convert English textual datetime into a Unix timestamp.
String myDate = «2020-04-05 05:36:40»;
SimpleDateFormat dateFormat = new SimpleDateFormat(«yyyy-MM-dd HH:mm:ss.SSS»);
Date date = dateFormat.parse(myDate);
long epoch = date.getTime();
System.out.println(epoch);
Output
1585990763
Create Date From Unix Timestamp in Java
As always, the writeup is super practical and based on a simple application that can work with documents with a mix of encrypted and unencrypted fields.
We rely on other people’s code in our own work. Every day.
It might be the language you’re writing in, the framework you’re building on, or some esoteric piece of software that does one thing so well you never found the need to implement it yourself.
The problem is, of course, when things fall apart in production — debugging the implementation of a 3rd party library you have no intimate knowledge of is, to say the least, tricky.
Lightrun is a new kind of debugger.
It’s one geared specifically towards real-life production environments. Using Lightrun, you can drill down into running applications, including 3rd party dependencies, with real-time logs, snapshots, and metrics.
Learn more in this quick, 5-minute Lightrun tutorial:
Slow MySQL query performance is all too common. Of course it is. A good way to go is, naturally, a dedicated profiler that actually understands the ins and outs of MySQL.
The Jet Profiler was built for MySQL only, so it can do things like real-time query performance, focus on most used tables or most frequent queries, quickly identify performance issues and basically help you optimize your queries.
Critically, it has very minimal impact on your server’s performance, with most of the profiling work done separately — so it needs no server changes, agents or separate services.
Basically, you install the desktop application, connect to your MySQL server, hit the record button, and you’ll have results within minutes:
DbSchema is a super-flexible database designer, which can take you from designing the DB with your team all the way to safely deploying the schema.
The way it does all of that is by using a design model, a database-independent image of the schema, which can be shared in a team using GIT and compared or deployed on to any database.
And, of course, it can be heavily visual, allowing you to interact with the database using diagrams, visually compose queries, explore the data, generate random data, import data or build HTML5 database reports.
Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:
> CHECK OUT THE COURSE
1. Introduction
In this quick tutorial, we’ll learn how to parse representations of dates from a Unix timestamp. Unix time is the number of seconds elapsed since January 1, 1970. However, a timestamp can represent time down to nanosecond precision. So, we’ll see the tools available and create a method to convert timestamps of any range to a Java object.
2. Old Way (Before Java 8)
Before Java 8, our simplest options were Date and Calendar. The Date class has a constructor that directly accepts a timestamp in milliseconds:
public static Date dateFrom(long input)
With Calendar, we have to call setTimeInMillis() after getInstance():
public static Calendar calendarFrom(long input)
In other words, we must know if our input is in seconds, nanoseconds, or any other precision in between. Then, we have to convert our timestamp to milliseconds manually.
3. New Way (Java 8+)
Java 8 introduced Instant. This class has utility methods to create instances from seconds and milliseconds. Also, one of them accepts a nanoseconds adjustment parameter:
Instant.ofEpochSecond(seconds, nanos);
But we still must know in advance the precision of our timestamp. So, for example, some calculations are needed if we know our timestamp is in nanoseconds:
public static Instant fromNanos(long input) < long seconds = input / 1_000_000_000; long nanos = input % 1_000_000_000; return Instant.ofEpochSecond(seconds, nanos); >
First, we divide our timestamp by one billion to get the seconds. Then, we use its remainder to get the part after seconds.
4. Universal Solution With Instant
To avoid extra work, let’s create a method that can convert any input to milliseconds, which most classes can parse. Firstly, we check in what range our timestamp is. Then, we perform calculations to extract the milliseconds. Moreover, we’ll use scientific notations to make our conditions more readable.
Also, remember that timestamps are signed, so we have to check both the positive and negative ranges (negative timestamps mean they’re counted backward from 1970).
So, let’s start by checking if our input is in nanoseconds:
private static long millis(long timestamp) < if (millis >= 1E16 || millis // next range checks >
First, we check if it’s in the 1E16 range, which is one followed by 16 zeroes. Negative values represent dates before 1970, so we also have to check them. Then, we divide our value by one million to get to milliseconds.
Similarly, microseconds are in the 1E14 range. This time, we divide by one thousand:
if (timestamp >= 1E14 || timestamp
We don’t need to change anything when our value is in the 1E11 to -3E10 range. That means our input is already in milliseconds precision:
if (timestamp >= 1E11 || timestamp
Finally, if our input isn’t any of these ranges, then it must be in seconds, so we need to convert this to milliseconds:
4.1. Normalizing Input for Instant
Now, let’s create a method that returns an Instant from input in any precision with Instant.ofEpochMilli():
public static Instant fromTimestamp(long input)
Note that every time we divide or multiply values, precision is lost.
4.2. Local Time With LocalDateTime
An Instant represents a moment in time. But, without a time zone, it’s not easily readable, as it depends on our location in the world. So, let’s create a method to generate a local time representation. We’ll use the UTC to avoid different results in our tests:
public static LocalDateTime localTimeUtc(Instant instant)
Now, we can test how using wrong precisions can result in entirely different dates when methods expect specific formats. First, let’s pass a timestamp in nanoseconds we already know the correct date for, but convert it to microseconds and use the fromNanos() method we created earlier:
@Test void givenWrongPrecision_whenInstantFromNanos_thenUnexpectedTime() < long microseconds = 1660663532747420283l / 1000; Instant instant = fromNanos(microseconds); String expectedTime = "2022-08-16T15:25:32"; LocalDateTime time = localTimeUtc(instant); assertThat(!time.toString().startsWith(expectedTime)); assertEquals("1970-01-20T05:17:43.532747420", time.toString()); >
This problem won’t happen when we use the fromTimestamp() method we created in the previous subsection:
@Test void givenMicroseconds_whenInstantFromTimestamp_thenLocalTimeMatches() < long microseconds = 1660663532747420283l / 1000; Instant instant = fromTimestamp(microseconds); String expectedTime = "2022-08-16T15:25:32"; LocalDateTime time = localTimeUtc(instant); assertThat(time.toString().startsWith(expectedTime)); >
5. Conclusion
In this article, we learned how to convert timestamps with core Java classes. Then, we saw how they can have different levels of precision and how that affects our results. Lastly, we created a simple way to normalize our input and get consistent results.
And, as always, the source code is available over on GitHub.
Slow MySQL query performance is all too common. Of course it is. A good way to go is, naturally, a dedicated profiler that actually understands the ins and outs of MySQL.
The Jet Profiler was built for MySQL only, so it can do things like real-time query performance, focus on most used tables or most frequent queries, quickly identify performance issues and basically help you optimize your queries.
Critically, it has very minimal impact on your server’s performance, with most of the profiling work done separately — so it needs no server changes, agents or separate services.
Basically, you install the desktop application, connect to your MySQL server, hit the record button, and you’ll have results within minutes:
How to get the Unix timestamp in Java
In the field of computer science, there is a concept of the unix timestamp, also known as the posix time or epoch time. This timestamp is defined as the number of seconds that have elapsed since January 1, 1970.
This is useful because it allows us to express dates and time in a single number as opposed to having to store the day, month, year, hour, minutes and seconds separately.
In this post, we’ll learn all the different ways to get the unix timestamp in Java.
Instant
Java introduced a new API for date and time to replace the old Date class. This is thread-safe and immutable, among other useful improvements.
Here’s how to get the current time in Java using the Instant class:
You can then take this number and convert it to a date and time using the Instant class:
With the Instant class, you can then call any method on the Instant class to get any additional piece of information that you want.
System.currentTimeMillis()
The original way to get the unix timestamp in Java was to use the System.currentTimeMillis() method. This method returns the number of milliseconds that have elapsed since the epoch time. From there you can just use simple division to get the number of seconds.
Remember that this is only useful for when you’re on Java 7 or lower, since in Java 8, you can use the much-improved Instant class.
Date
The final way to get the unix timestamp in Java is to use the Date class. This class is not thread-safe, and is not immutable, so only use it if you are on Java 7 or lower.
Here’s how to use the Date class to get the unix timestamp:
Conclusion
In this post, we explored three different ways to get the unix timestamp in Java.
Basically, if you are on a modern version of Java, you should use the Instant class, otherwise, you should use the Date class.
Hopefully, you’ve found this post helpful! Happy coding!
If you want to learn about web development, founding a start-up, bootstrapping a SaaS, and more, follow me on Twitter! You can also join the conversation over at our official Discord!
Give feedback on this page , tweet at us, or join our Discord !
How to get the Unix timestamp in Java
The Unix timestamp is an integer value representing the number of seconds elapsed since the Unix Epoch on January 1st, 1970, at 00:00:00 UTC. In short, a Unix timestamp is the number of seconds between a specific date and the Unix Epoch.
There are multiple ways to compute a Unix timestamp in Java.
The simplest way to get a Unix atimestamp is using the Instant class. The Instant class is part of new date and time API and provides several methods to work with timestamps.
long unixTime = Instant.now().getEpochSecond(); System.out.println(unixTime); // 1665083712
The getEpochSecond() method returns the seconds from the Unix epoch of 1970-01-01T00:00:00Z .
To convert a Unix timestamp back to an instance of Instant , use the Instant.ofEpochSecond() method:
long unixTime = 1665083712; Instant instant = Instant.ofEpochSecond(unixTime); System.out.println(instant); // 2022-10-06T19:15:12Z
An Instant object represents an unique moment in the timeline using a universal timezone (UTC).
In Java 7 and below, you can use the System.currentTimeMillis() method to get the current time in milliseconds.
Later, you can convert the milliseconds into seconds to get the Unix timestamp, as shown below:
long unixTime = System.currentTimeMillis() / 1000L; System.out.println(unixTime); // 1665083712
Finally, the last method to get the Unix timestamp in Java is using the legacy Date class:
Date date = new Date(); long unixTime = date.getTime() / 1000L; System.out.println(unixTime); // 1665083712
You may be interested in reading the following Java date and time tutorials:
✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.