How to set time to a date object in java

java date set time to midnight
how to set date in java
java set time to 00:00:00
how to set time in java
set date object java
date java
java date set timezone
java set system time

I created a Date object in Java. When I do so, it shows something like: date=Tue Aug 09 00:00:00 IST 2011. As a result, it appears that my Excel file is lesser by one day (27 feb becomes 26 feb and so on) I think it must be because of time. How can I set it to something like 5:30 pm?


How to set time to a date object in java, Java Date.setTime() Method with example: Sets this Date object to represent a point in time that is time milliseconds after January 1, 1970  The setTime() method of Java Date class sets a date object. It sets date object to represent time milliseconds after January 1, 1970 00:00:00 GMT. Syntax: public void setTime(long time)


Can you show code which you use for setting date object? Anyway< you can use this code for intialisation of date:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2011-01-01 00:00:00")

How to set time of java.util.Date instance to 00:00:00?, Returns the number of milliseconds that have elapsed since January 1, 1970. 8. int hashCode( ). Returns a hash code for the invoking object. 9. void setTime(​long  Amongst Java's myriad of classes is the Calendar class, which is used to convert dates and time between specific instants and the calendar fields. Getting the current date and time is really easy using a calendar: Calendar calendar = Calendar.getInstance (); // Returns instance with current date and time set.


I should like to contribute the modern answer. This involves using java.time, the modern Java date and time API, and not the old Date nor Calendar except where there’s no way to avoid it.

Your issue is very likely really a timezone issue. When it is Tue Aug 09 00:00:00 IST 2011, in time zones west of IST midnight has not yet been reached. It is still Aug 8. If for example your API for putting the date into Excel expects UTC, the date will be the day before the one you intended. I believe the real and good solution is to produce a date-time of 00:00 UTC (or whatever time zone or offset is expected and used at the other end).

    LocalDate yourDate = LocalDate.of(2018, Month.FEBRUARY, 27);
    ZonedDateTime utcDateDime = yourDate.atStartOfDay(ZoneOffset.UTC);
    System.out.println(utcDateDime);

This prints

2018-02-27T00:00Z

Z means UTC (think of it as offset zero from UTC or Zulu time zone). Better still, of course, if you could pass the LocalDate from the first code line to Excel. It doesn’t include time-of-day, so there is no confusion possible. On the other hand, if you need an old-fashioned Date object for that, convert just before handing the Date on:

    Date oldfashionedDate = Date.from(utcDateDime.toInstant());
    System.out.println(oldfashionedDate);

On my computer this prints

Tue Feb 27 01:00:00 CET 2018

Don’t be fooled, it is correct. My time zone (Central European Time) is at offset +01:00 from UTC in February (standard time), so 01:00:00 here is equal to 00:00:00 UTC. It’s just Date.toString() grabbing the JVMs time zone and using it for producing the string.

How can I set it to something like 5:30 pm?

To answer your direct question directly, if you have a ZonedDateTime, OffsetDateTime or LocalDateTime, in all of these cases the following will accomplish what you asked for:

    yourDateTime = yourDateTime.with(LocalTime.of(17, 30));

If yourDateTime was a LocalDateTime of 2018-02-27T00:00, it will now be 2018-02-27T17:30. Similarly for the other types, only they include offset and time zone too as appropriate.

If you only had a date, as in the first snippet above, you can also add time-of-day information to it:

    LocalDate yourDate = LocalDate.of(2018, Month.FEBRUARY, 27);
    LocalDateTime dateTime = yourDate.atTime(LocalTime.of(17, 30));

For most purposes you should prefer to add the time-of-day in a specific time zone, though, for example

    ZonedDateTime dateTime = yourDate.atTime(LocalTime.of(17, 30))
            .atZone(ZoneId.of("Asia/Kolkata"));

This yields 2018-02-27T17:30+05:30[Asia/Kolkata].

Date and Calendar vs java.time

The Date class that you use as well as Calendar and SimpleDateFormat used in the other answers are long outdated, and SimpleDateFormat in particular has proven troublesome. In all cases the modern Java date and time API is so much nicer to work with. Which is why I wanted to provide this answer to an old question that is still being visited.

Link: Oracle Tutorial Date Time, explaining how to use java.time.

Java Date setTime() Method, setTime(long time) method sets this Date to show time milliseconds after January 1, 1970 00:00:00 GMT. Declaration. Following is the declaration for java.util.Date. Formatting Date and Time The "T" in the example above is used to separate the date from the time. You can use the DateTimeFormatter class with the ofPattern () method in the same package to format or parse date-time objects. The following example will remove both the "T" and milliseconds from the date-time:


If you don't have access to java 8 and the API java.time, here is my simple function to copy the time of one date to another date using the old java.util.Calendar (inspire by Jigar Joshi) :

/**
 * Copy only the time of one date to the date of another date.
 */
public static Date copyTimeToDate(Date date, Date time) {
    Calendar t = Calendar.getInstance();
    t.setTime(time);

    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, t.get(Calendar.HOUR_OF_DAY));
    c.set(Calendar.MINUTE, t.get(Calendar.MINUTE));
    c.set(Calendar.SECOND, t.get(Calendar.SECOND));
    c.set(Calendar.MILLISECOND, t.get(Calendar.MILLISECOND));
    return c.getTime();
}

Java - Date and Time, Create an object of Calendar class by calling getInstance() method of it. Call the format() method of DateFormat and pass the Calendar.getTime() as a parameter to  First, we shall see how to get the current date- Java provides a Date class under the java.util package, The package provides several methods to play around with the date. You can use the Date object by invoking the constructor of Date class as follows:


Java.util.Date.setTime() Method, How to use. setTime. method. in. java.util.Calendar setTime(date); // assigns calendar to given date int hour Convert String to Calendar Object in Java. Use the Calendar class to quickly create your Date object //Generate a date for Jan. 9, 2013, 10:11:12 AM Calendar cal = Calendar.getInstance(); cal.set(2013, Calendar.JANUARY, 9); //Year, month and day of month Date date = cal.getTime(); If you also need to set the time, you can use the .set() method with the following parameters:


How to get current date and time in java, Let's see how to add n hours to a given Date object: ? setTime(date); Date toInstant() method to convert a Date object to a java.time.Instant  getTime(): Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object. setTime(long time): Sets this Date object to represent a point in time that is time milliseconds after January 1, 1970 00:00:00 GMT. ) There are 1000 milliseconds in a second, and 60 seconds in a minute. Just do the math.


java.util.Calendar.setTime java code examples, The following code snippet shows you how to remove time information from the java.util.Date object. The static method removeTime() in the  It is because value coming String (Java Date object constructor for getting string is deprecated) and Date (String) is deprecated. Have a look at jodatime or you could put @SuppressWarnings ({“deprecation”}) outside the method calling the Date (String) constructor.