2014-03-02 69 views
0

我将字符串转换为android中的日期对象...... 字符串以“2014-02-22”或类似的形式从服务器传入。 。我想将它转换为我的日期,我可以在我的应用程序中使用.. 我正在使用简单的日期格式,解析方法来转换.... 但此语句抛出解析异常...意思是它不转换我的字符串..这是“2014年2月22日” ...... 应该转换,但它不是.... 非常和善帮我在这.....我在应对越来越空如何使用simpledateformat将字符串转换为日期

@SuppressLint("SimpleDateFormat") 
public static Date getDate(String string){ 
    Date date = null; 
    try { 
     date = new Date(); 
     date = new SimpleDateFormat("yyyy/MM/dd").parse(string); 
    } 
    catch (ParseException e) { e.printStackTrace(); } 
    catch (java.text.ParseException e) { e.printStackTrace(); } 
    return date; 

} 
+0

试试这个日期=新的SimpleDateFormat( “YYYY-MM-DD”)解析(字符串); –

+1

格式'yyyy/MM/dd'是否匹配'2014-02-22'? –

+0

可能重复的[如何将Java字符串转换为Date对象](http://stackoverflow.com/questions/6510724/how-to-convert-java-string-to-date-object) – MDMalik

回答

2

尝试如下...

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date; 

@SuppressLint("SimpleDateFormat") 
public static Date getDate(String string){ 

     date = new Date(); 

     try { 
       date = format.parse(string); 
     }  catch (ParseException e) { 
       e.printStackTrace(); 
     } 

     return date; 
    } 
+0

只是为了改善这一点,我将格式定义为clas级别的静态final,因为yo只需要创建一次,然后就可以在其他方法中重用。 –

+0

除了您的观点...我还想在课堂级别声明'日期'对象...但是,仅为解决方案,我提供了上述解决方案。谢谢你的观点。 –

+0

确定其工作...感谢那... ,但我现在有新的问题....现在我已经转换日期保存到数据库.... 当我下一次从数据库中读取我不需要解析它再次......对吗? 我怎么能保存日期的字符串值,因为它是.....如果我解析它使用这种方法异常发生..但是它的工作正常,当我将它保存到数据库 –

0

只需使用SimpleDateFormat(点击链接查看所有格式模式)。

String string = "2014-02-22"; 
Date date = new SimpleDateFormat("yyy-M-d", Locale.ENGLISH).parse(string); 
System.out.println(date); // Sat Jan 02 00:00:00 BOT 2010 

下面是相关的,从the javadoc提取物,列出所有可用格式模式:

G Era designator  Text    AD 
y Year     Year    1996; 96 
M Month in year  Month    July; Jul; 07 
w Week in year   Number    27 
W Week in month  Number    2 
D Day in year   Number    189 
d Day in month   Number    10 
F Day of week in month Number    2 
E Day in week   Text    Tuesday; Tue 
u Day number of week Number    1 
a Am/pm marker   Text    PM 
H Hour in day (0-23) Number    0 
k Hour in day (1-24) Number    24 
K Hour in am/pm (0-11) Number    0 
h Hour in am/pm (1-12) Number    12 
m Minute in hour  Number    30 
s Second in minute  Number    55 
S Millisecond   Number    978 
z Time zone   General time zone Pacific Standard Time; PST; GMT-08:00 
Z Time zone   RFC 822 time zone -0800 
X Time zone   ISO 8601 time zone -08; -0800; -08:00 
+0

什么?你甚至读过这个问题吗? –

+0

是我的字符串变量是你的格式的参数,你的'SimpleDateFormat'格式不匹配,因此问题 – MDMalik

+0

我不是OP。但是,你的意思是 - *不这样做,这是困难的。*? OP已经在使用'SimpleDateFormat'。 –

1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 

Date testDate = null; 

try { 
     testDate = sdf.parse("2013-11-12"); 
} 
catch(Exception ex) { 
     ex.printStackTrace(); 
} 

int date= testDate.getDate(); 
int month = testDate.getMonth(); 
int year = testDate.getYear(); 
+0

小写字母m匹配分钟,而不是月。 OP需要大写字母M,如其他所有答案所示。 –

+0

tnq typo ........ –

+0

np,我们发现上周在别人写在生产代码中的日志工具中有同样的错误!顺便说一句,我也会使sdf类静态最终,因为它是可重复使用的 –

相关问题