Java 用于从字符串分析日期的偏移量(0)处的不可解析日期异常
我正在尝试解析我的字符串,它的格式是Java 用于从字符串分析日期的偏移量(0)处的不可解析日期异常,java,android,date,Java,Android,Date,我正在尝试解析我的字符串,它的格式是19,1192016 12:25 pm,我的SimpleDateFormat是EEEE,MMMM dd,yyyy hh:mm a。我将上述字符串解析为2016年1月19日星期二下午12:25,但它在这里抛出了可分配异常。下面给出了我的代码,请在这里帮助我 stestRequest = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); // stringDate = "19, 1 19, 2016 12:
19,1192016 12:25 pm
,我的SimpleDateFormat是EEEE,MMMM dd,yyyy hh:mm a
。我将上述字符串解析为2016年1月19日星期二下午12:25,但它在这里抛出了可分配异常。下面给出了我的代码,请在这里帮助我
stestRequest = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a");
// stringDate = "19, 1 19, 2016 12:25 pm"
dateRequestSelected = stestRequest.parse(stringDate);
请帮帮我,提前谢谢。试试这个
ParsePosition pos = new ParsePosition(0);
SimpleDateFormat simpledateformat = new SimpleDateFormat("MM dd, yyyy hh:mm a"); //your date string format is : 1 19, 2016 12:25 pm
Date stringDate = simpledateformat.parse(date, pos);
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); //Tuesday, January 19, 2016 12:25 pm,
System.out.println(dayFormat.format(stringDate));
因此,如果您的日期字符串为2016年11月19日下午12:25 您需要定义与字符串对应的日期格式:
SimpleDateFormat sdf = new SimpleDateFormat("MM dd',' yyyy hh:mm aa");
然后必须解析字符串:
Date date = sdf.parse(dateString);
下一步是定义输出的格式:
SimpleDateFormat stestRequest = new SimpleDateFormat("EEEE',' MMMM dd',' yyyy hh:mm a");
然后您必须使用cal格式:
stestRequest.format(date);
有关更多信息,请参阅的文档。请尝试此
String stringDate = "01 19, 2016 12:25 pm";
SimpleDateFormat oldSdf = new SimpleDateFormat("MM dd, yyyy hh:mm a");
SimpleDateFormat newSdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a");
String dateRequestSelected = null;
try {
dateRequestSelected = newSdf.format(oldSdf.parse(stringDate));
Log.e("Date", dateRequestSelected);
} catch (ParseException e) {
e.printStackTrace();
}
输出:2016年1月19日星期二下午12:25
编辑:
String stringDate = "01 19, 2016 12:25 pm";
SimpleDateFormat oldSdf = new SimpleDateFormat("MM dd, yyyy hh:mm a");
SimpleDateFormat newSdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a");
Date dateRequestSelected = null;
try {
dateRequestSelected = newSdf.parse(newSdf.format(oldSdf.parse(stringDate)));
Log.e("Date", dateRequestSelected+"");
} catch (ParseException e) {
e.printStackTrace();
}
输出:星期二1月19日12:25:00 GMT+2016年5:30新的Date()。toString()方法将为您提供所需格式的日期。您可以将其写入一个文件,然后在读取该文件时,可以使用新日期(字符串)解析日期。例如:
package Testers;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
public class Datestufff {
public void recordCurrentDate(File file){
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
String date = new Date().toString();
writer.write(date);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getDate(File file){
String date = "Unknown!";
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
date = line;
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return date;
}
public void recordDate(File file, Date date){
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(date.toString());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}stringdate的格式与您的模式不同。第一个19应该是什么?stringDate必须是
Date
format@DanhDC无解析表达式字符串。@Jens谢谢您的评论。19日是我一个月中的一天。我需要将其显示为星期二。因此您必须对其进行解析,然后使用format()设置日期格式。谢谢您的回答。你能告诉我,有一件事,是不是可以把日期设为对象,比如2016年1月19日星期二下午12:25。因为我必须在服务器上发送这样的日期对象。是的,你们可以,但它会改变输出。检查编辑的答案。