2012-11-01 99 views
3

我是android編程的新手,所以請和我一起裸照。我有一個問題,與日期比較。我有一個來自TextView的日期(通常存儲在SQLite文本字段中)。 TextView rowduedate攜帶一個日期,其值爲:「2012/10/01 15:16」 如果我對我在下面粘貼的代碼進行了註釋,它會正常工作,並顯示R.id.rowduedate。所以它不是空的。但是我得到的logcat中出現以下錯誤:如何將日期TextView轉換爲長與當前日期進行比較

11-01 15:16:55.445: E/AndroidRuntime(783): FATAL EXCEPTION: main 
11-01 15:16:55.445: E/AndroidRuntime(783): java.lang.NumberFormatException: Invalid long: "" 
11-01 15:16:55.445: E/AndroidRuntime(783): at java.lang.Long.invalidLong(Long.java:125) 
11-01 15:16:55.445: E/AndroidRuntime(783): at java.lang.Long.parseLong(Long.java:346) 
11-01 15:16:55.445: E/AndroidRuntime(783): at java.lang.Long.parseLong(Long.java:319) 
11-01 15:16:55.445: E/AndroidRuntime(783): at com.android.demo.notepad3.Notepadv3$1.setViewValue(Notepadv3.java:100) 

這是代碼:

TextView dueDate = (TextView) view.findViewById(R.id.rowduedate); 
String due = (String) dueDate.getText().toString(); 

if(due!=null){ 
Long longDue = Long.parseLong(due); 
String now = new Date().toString(); 
Long longNow = Long.parseLong(now); 

if(longDue <= longNow){ 

     dueDate.setTextColor(Color.RED); 
}    
} 

希望有人能幫助我在正確的軌道上。

謝謝。

回答

3

您需要告訴您的代碼日期格式如何,以便從中提取時間。

String strDate = "2007-12-25"; 
SimpleDateFormat Formatter = new SimpleDateFormat("yyyy/MM/dd"); 
Date myDate = Formatter.parse(strDate); 
1

看來你試圖解析一個空字符串,請注意這一點。

假設你的dueDate:TextView的包含以下格式的有效日期「2012年10月1日15:16」:

long due = new SimpleDateFormat("yyyy/MM/dd HH:mm").parse(dueDate.getText().toString()).getTime(); 

if (due <= System.currentTimeMillis()) 
    dueDate.setTextColor(Color.RED); 

這應該幫助,

0

不比較的日期通過解析日期字符串到Long

這是您可以比較日期值的方式。檢查它

TextView dueDate = (TextView) view.findViewById(R.id.rowduedate); 
String due = (String) dueDate.getText().toString(); 
SimpleDateFormat parser=new SimpleDateFormat("yyyy/MM/dd HH:mm"); 
Date d = null; 
Date now = new Date(); 
if(due!=null){ 
try { 
    d = parser.parse(due); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
if(d.before(now){ 

     dueDate.setTextColor(Color.RED); 
}    
} 
相關問題