请告诉我如何解析这个日期:“2012年7月29日”
我试试:
new SimpleDateFormat("dd-MMM-yyyy");
但它不起作用。我得到以下异常:
java.text.ParseException: Unparseable date: "29-July-2012"
答案 0 :(得分:5)
您还需要提及Locale ......
Date date = new SimpleDateFormat("dd-MMMM-yyyy", Locale.ENGLISH).parse(string);
答案 1 :(得分:3)
在你的字符串中,完整格式用于月份,因此根据http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html,您应该按照Baz评论中的建议使用MMMM。
可以从API文档中读取此原因。 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#month指出,如果有超过3个字符,则月份将被解释为文本 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#text声明完整格式(在您的情况下为'July'而非'Jul')将用于4个或更多字符。
答案 2 :(得分:2)
试试这个(添加Locale.ENGLISH参数和月份的长格式)
package net.orique.stackoverflow.question11815659;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class Question11815659 {
public static void main(String[] args) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMM-yyyy",
Locale.ENGLISH);
System.out.println(sdf.parse("29-July-2012"));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 3 :(得分:1)
将split()
功能与分隔符 "-"
String s = "29-July-2012";
String[] arr = s.split("-");
int day = Integer.parseInt(arr[0]);
String month = arr[1];
int year = Integer.parseInt(arr[2]);
// Now do whatever u want with the day, month an year values....
答案 4 :(得分:0)
创建一个StringTokenizer。首先需要导入库:
import Java.util.StringTokenizer;
基本上,您需要创建一个分隔符,这基本上是分隔文本的东西。在这种情况下,分隔符是" - " (短划线/减号)。
注意:由于您显示带引号和解析的文本,我假设它是一个字符串。
示例:
//Create string
String input = "29-July-2012";
//Create string tokenizer with specified delimeter
StringTokenizer st = new StringTokenizer(input, "-");
//Pull data in order from string using the tokenizer
String day = st.nextToken();
String month = st.nextToken();
String year = st.nextToken();
//Convert to int
int d = Integer.parseInt(day);
int m = Integer.parseInt(month);
int y = Integer.parseInt(year);
//Continue program execution