Parse string to Date Java [duplicate] - java

This question already has an answer here:
Android Studio unhandled exception warnings
(1 answer)
Closed 6 years ago.
I have a database that saves a date in string.
Before saving it to my db, I put the date in format yyyy-MM-dd HH:mm with SimpleDateFormat.
I manage to fetch the String from my db and the format is correct.
My problem is when I try to set my Calendar with the setTime() function I require a Date. So basically I need to convert the String sent by my database into the Date format. When I try to do so I get ParseException error
Here is an example:
private Calendar c;
private SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm");
private String myDate;
private Date d;
myDate = db.getDate() //This works I output correct date
d = dateFormat.parse(date); // Error Message : Unhandled Exception: java.text.ParseException
c.setTime(d); //Needs Date Format to set time

It's not an error, IDE (Android Studio) is asking you to handle the exception to prevent run time exception. Include that in try catch block:
try {
d = dateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}

Related

Java SimpleDateFormat: Pattern - ParseException [duplicate]

This question already has answers here:
Datetime parsing error
(2 answers)
Closed 5 years ago.
I am struggling with a date string, I need to parse into the java ‘Date’ object.
Here is what I have got so far:
try {
String value = "2017‎-‎11‎-‎23T14:00:49.184000000Z";
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'";
SimpleDateFormat parser = new SimpleDateFormat(pattern);
Date date = parser.parse(value);
} catch (ParseException e) {e.printStackTrace();}
It currently throws a ParseException “Unparseable date” and I can’t get it to work.
Any help is highly appreciated!
Thanks
Use Instant from java.time package (java 8) instead, it should look like below
String value = "2017-11-23T14:00:49.184000000Z";
Instant instant = Instant.parse(value);
Date date = Date.from(instant);
System.out.println(date);
you can use timeZone as well like this as another solution.
TimeZone tz = TimeZone.getTimeZone("Asia/Calcutta");
Calendar cal = Calendar.getInstance(tz);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'");
sdf.setCalendar(cal);
cal.setTime(sdf.parse("2017-11-23T14:58:00.184000000Z"));
Date date = cal.getTime();
System.out.println(date);

Set timezone to IST, but I still get a wrong-date error [duplicate]

This question already has answers here:
Java date format conversion - getting wrong month
(8 answers)
Closed 5 years ago.
I want to take current time irrespective to the system date. I am using Glassfish server and derby in netbeans. I tried the code below for getting current date according to IST:
DateFormat df = new SimpleDateFormat("yyyymmdd");
df.setTimeZone(TimeZone.getTimeZone("ist"));
String gmtTime = df.format(new java.util.Date().getTime());
java.util.Date parsed = null;
try {
parsed = (java.util.Date) df.parse(gmtTime);
} catch (ParseException ex) {
Logger.getLogger(EmployeePanel.class.getName()).log(Level.SEVERE, null, ex);
}
java.sql.Date date = new java.sql.Date(parsed.getTime());
but I am getting 2017-01-08 instead of 2017-08-08.
m is minute not month (M). The right pattern is:
SimpleDateFormat("yyyyMMdd");
The pattern definition is case sensitive!
For more informations see the javadoc of SimpleDateFormat

How to validate dates in two different formats [duplicate]

This question already has answers here:
How do I convert the date from one format to another date object in another format without using any deprecated classes?
(10 answers)
Closed 5 years ago.
I am doing some junit test. I am getting the date as response in the form of date as below :
2017-08-14 00:00:00.0 +0:00
The data which is present in oracle DB is
14-AUG-17 12.00.00.000000000 AM +00:00
I want to use an assert like this but it is failing. can anyone help to make sure that both expected and actual matches.
Assert.assertEquals("14-08-2017", 2017-08-14 00:00:00.0 +0:00);
You can create two Date objects and for the assertion.
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
try {
Date parsedDate1 = formatter.parse("14-08-2017");
System.out.println(parsedDate1);
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate2 = formatter2.parse("2017-08-1 00:00:00.0 +0:00");
Assert.assertEquals(parsedDate1, parsedDate2);
} catch (ParseException e1) {
}
You can use SimpleDateFormat to make string from date.
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Assert.assertEquals("14-08-2017", sdf.format(<your date instance>));

Java convert Date in string to Date [duplicate]

This question already has answers here:
Java string to date conversion
(17 answers)
Closed 6 years ago.
how to convert this string "2016-10-08T01:00:00-07:00" to date object in Java?
I want to know what is string format to use with SimpleDateFormat.
I have try
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
try {
Date date = format.parse("2016-10-08T01:00:00-07:00");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Change your format from Z to X will work . Detail is here
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
Date date = format.parse("2016-10-08T01:00:00-07:00");
should be
Date date = format.parse("2016-10-08T01:00:00-0700");
The time zone should not have a colon delimiting hours and minutes.
You can try SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
Best solution to refer # Change date format in a Java string

Check that an input is a Date Java [duplicate]

This question already has answers here:
Java: Check the date format of current string is according to required format or not [duplicate]
(8 answers)
Closed 7 years ago.
Hi is there a way to check if an input is a date in Java, the date format is DD/MM/YYYY so int\int\int
I have the basic check if (x != "") but I was wondering if you check that it is a date.
Now I'me getting a new error code:
try {
date = (Date) dateFormat.parse(dateInput);
} catch (ParseException e1) {
System.out.println("FAIL!!!!!!!!");
JOptionPane.showMessageDialog(null, "Date entered is incorrect, please close this window and try again");
new BookApp();
}
The indents probably got messed in when I copied and pasted it, but when the format is wrong it works and the dialog menu pops up. But when I give 12\08\2015 it give a ClassCastError.
How do I get this working?
1) Create a formatter for your date pattern :
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
2) Try to format your String input to a date :
Date date = dateFormat.parse(input);
Now, if the input doesn't match your pattern, you get a ParseException.
You can always try to parse the date and capture if the parse was successful or not.
The SimpleDateFormat will throw an exception if the string was not parsable as a date.
public boolean isDate(String dateString) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
return dateFormat.parse(dateString) != null;
} catch (ParseException e) {
return false;
}
}

Categories

Resources