Java TimeZone conversion issue [duplicate] - java

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Java Timezone: why Offset is needed
My system timezone is Asia/Calcutta.My requirment is to convert time in one timezone to other.
long l = 1223123123232l;// long value representing the date.
TimeZone tz = TimeZone.getTimeZone("Australia/Sydney");// First Time zone
long tzOff = tz.getOffset(l);
java.util.Date d = new Date(l-tzOff); // WHY THIS??
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
df.setTimeZone(TimeZone.getTimeZone("Africa/Asmara"));// Required Time zone
String s = df.format(d);
System.out.println(s);
What is wrong with my code?

This is a duplicate question and already resolved.
Use Java Timezone: why Offset is needed
OR
Try below
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
System.out.println("Default time, timezone EST : "+dateFormat.format(date));
TimeZone t1 = TimeZone.getTimeZone("Asia/Calcutta");
dateFormat.setTimeZone(t1);
System.out.println("Converted time, timezone IST : "+dateFormat.format(date));

Related

How to get in this date format? [duplicate]

This question already has answers here:
How can I change the date format in Java? [duplicate]
(10 answers)
Change date format in a Java string
(22 answers)
Java string to date conversion
(17 answers)
Closed 4 years ago.
I am getting two date fields from JSON as text like this May 22 12:05:41 UTC 2018 and 2018-05-22 12:05:41.512 but I have to change to MM-dd-yyyy HH:mm:ss format.
Just to be clear - date/time objects are format agnostic. They are simply containers for the amount of time which has passed since a fixed point in time (usually the Unix Epoch), so you can't change their format per se.
However, you can, generate a String of a prescribed pattern.
When dealing with date/time in Java you should make use of the date/time APIs introduced in Java 8 (or the ThreeTen back port)
For example...
String date1 = "May 22 12:05:41 UTC 2018";
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
LocalDateTime ldt1 = LocalDateTime.parse(date1, format1);
String date2 = "2018-05-22 12:05:41.512";
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);
LocalDateTime ldt2 = LocalDateTime.parse(date2, format2);
DateTimeFormatter format3 = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss", Locale.ENGLISH);
System.out.println(ldt1.format(format3));
System.out.println(ldt2.format(format3));
Which outputs...
05-22-2018 12:05:41
05-22-2018 12:05:41
Since one of your inputs has a timezone associated with it, it would be appropriate to take it into consideration
ZonedDateTime zdt = ZonedDateTime.parse(date1, format1);
LocalDateTime ldt1 = zdt.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();
which outputs (for my current location)
05-22-2018 22:05:41
You can use this code
DateFormat format = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
DateFormat inputFormat1 = new SimpleDateFormat("MMM dd HH:mm:ss z yyyy");
DateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String date1 = "May 22 12:05:41 UTC 2018";
String date2 = "2018-05-22 12:05:41.512";
System.out.println(format.format(inputFormat1.parse(date1)));
System.out.println(format.format(inputFormat2.parse(date2)));

Format a date to a specific format in java? [duplicate]

This question already has answers here:
Setting date into "dd"-"mm"-"yy" format from "dd"-"mm"-"yyyy" in java
(4 answers)
Closed 6 years ago.
I have a date in the format 11-NOV-13
When i convert the date i get the value Sat Nov 11 00:00:00 IST 13.
But i want the converted date to be in the format Sat Nov 11 00:00:00 IST 2013.
Though i have used the dateformat it is not taking it. Can anyone point me where i am wrong?
Below is the code i have been working on
DateFormat format = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
Date myDate = format.parse("11-NOV-13");
Change the format to:
DateFormat format = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
You need to make the year 2 numbers:
DateFormat format = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
You can reference the docs here.
As you are not providing the full year you need
DateFormat format = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
Date myDate = format.parse("11-NOV-13");
System.out.println(myDate);
Change to this format:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
DateFormat format = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
Date myDate = format.parse("11-NOV-13");
String formattedDate = sdf.format(myDate);

convert milliseconds to date [duplicate]

This question already has answers here:
How to convert currentTimeMillis to a date in Java?
(13 answers)
Closed 8 years ago.
Server sending me time as 1390361405210+0530 so if I want to convert this in to date then should I have to add 0530 into 1390361405210 and then calculate date and time?
Any suggestion should be appreciated.Thanks
How about this.
long currentDateTime = 1390361405210L;
Date currentDate = new Date(currentDateTime);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss Z");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+530"));
System.out.println(sdf.format(currentDate));
public static void main( String[] args )
{
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
long milliSeconds=1390361405210L;
Date date = new Date(milliSeconds);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
System.out.println(formatter.format(calendar.getTime()));
System.out.println(formatter.format(date));
}
If we consider that the first part of the String is the number of milliseconds since the epoch, and the second part is a timezone indication (in that case, IST, Indian Standard Time), you can get a readable date like this :
final String jsonDate = "1390361405210+0530";
final Date date = new Date(Long.parseLong(jsonDate.substring(0, jsonDate.length() - 5)));
final DateFormat format = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.FULL, Locale.US);
format.setTimeZone(TimeZone.getTimeZone("GMT" + jsonDate.substring(jsonDate.length() - 5)));
System.out.println(format.format(date));
Output:
January 22, 2014 9:00:05 AM GMT+05:30

Java date format conversion [duplicate]

This question already has answers here:
Java date conversion [closed]
(2 answers)
Closed 9 years ago.
date from database
2013-10-26T10:31:20GMT+05:30
UI Date
Mon Feb 10 00:00:00 GMT+05:30 2014
need to convert according to Database Date
Please try this
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
ft.format(dNow);
Note: give your format to SimpleDateFormat ,it will then format as shown above.
Use following code
// This is how to get today's date in Java
Date today = new Date();// use your date here
//SimpleDateFormat example - Date with timezone information
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm 'GMT'Z '('z')'");
String date = DATE_FORMAT.format(today);
System.out.println("Today in yyyy-MM-dd'T'HH:mm 'GMT'Z '('z')' : " + date);

Date format in java [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
how to convert seconds_since_the_beginning_of_this_epoch to date format in java..?
hi i have "1304054138" in ssboetod . I want to display it in this "21 Apr 2011 11:46:00 AM IST" format. How i can do this in java code... ?
SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy hh:mm:ss a z")
String result = sdf.format(new Date(timestamp));
if timestamp is a String, you can obtain the long version by calling Long.parseLong(string)
Like this:
// creat date format
DateFormat dateFormat = DateFormat.getDateTimeInstance(
DateFormat.LONG, DateFormat.LONG);
// set time zone
dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));
// create and format date
String formattedDate = dateFormat.format(new Date(Long.valueOf("1304054138")));
// write out
System.out.println(formattedDate);

Categories