2014-09-22 25 views
1

我從用戶那裏獲取日期並將其存儲爲數據庫中的sting。例如我的數據庫中的日期看起來「2014年9月22日」。現在我想從那天開始只有一個月(九月)。我怎麼弄到的?從sqlite中以字符串形式存儲數據獲取月份android

我的代碼是

public ArrayList<String> getMonths(){ 
    String SELECT_MON = "select strftime('%m'," 
      + Diary_DBHandler.PERSONAL_DATE + ") from " + Diary_DBHandler.TABLE_PERSONAL + ";"; 
    Cursor c = database.rawQuery(SELECT_MON, null); 
    c.moveToFirst(); 
    ArrayList<String> mon=new ArrayList<String>(); 
    if (c != null) 
    { 
     while(!c.isAfterLast()) { 
      System.out.println(mon); 
      mon.add(c.getString(0)); 
      c.moveToNext(); 
     } 
    c.close(); 
} 
return mon; 
} 
+1

['SimpleDateFormat'](http://developer.android.com/reference/java/text/SimpleDateFormat.html)是你的朋友。用它來解析數據庫字符串,獲取它的'日曆',然後從那個月開始。 – 2014-09-22 07:31:45

+0

'strftime()'只適用於格式良好的**日期('2014-09-22'),而不是'22/09/2014'格式 – 2014-09-22 07:35:16

+0

但是如何在SimpleDateFormat中使用數據庫中的數據? – user3260194 2014-09-22 08:39:44

回答

1

你可以得到一個Date對象與SimpleDateFormat。您的字符串中的模式(「22/09/2014」)是dd/MM/yyyy

Date date = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH).parse(string); 

從年月日起,你可以建立一個Calendar對象

Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 

,並從Calendar,你可以很容易地提取一個月,與

cal.get(Calendar.MONTH) 
0

這裏是一個字符串轉換日期日期格式的例子

String dateString = "03/26/2012 11:49:00 AM"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println(convertedDate); 

如果你只希望一個月,看看該方法getMonth();Date Android Developer

請注意,這是對數據庫存儲時間戳(長)不是字符串日期更好的辦法。

相關問題