1

使用 J2ME,netbeans 7.2,开发移动应用程序..

我已将 Datefield 值转换为 String,现在想将其放回 Datefield。为此,我需要将字符串转换回日期字段,我正在使用以下代码,但它没有发生。

long myFileTime = dateField.getDate().getTime(); // getting current/set date from the datefield into long
         String date = String.valueOf(myFileTime); // converting it to a String to put it back into a different datefield

         Date updatedate= stringToDate(date); // passing the string 'date' to the Method stringToDate() to convert it back to date.
                 dateField1.setDate(updatedate); // updating the date into the new datefield1

public Date stringToDate(String s) 
{
    Calendar c = Calendar.getInstance();

    c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(s.substring(0, 2)));
    c.set(Calendar.MONTH, Integer.parseInt(s.substring(3, 5)) - 1);
    c.set(Calendar.YEAR, Integer.parseInt(s.substring(6, 10)));

    return c.getTime();
}
4

1 回答 1

1

既然你提到你有long myFileTime周围,你应该能够使用:

Date updatedate=new Date(myFileTime);

转换回您的日期。如果只有您String的可用,您应该将您的功能修改为:

public Date stringToDate(String s){
  Calendar c = Calendar.getInstance();

  c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(s.substring(0, 2)));
  c.set(Calendar.MONTH, Integer.parseInt(s.substring(2, 4))-1 );
  c.set(Calendar.YEAR, Integer.parseInt(s.substring(4, 8)));

  return c.getTime();
}

注意更改的索引。

在 Java SE 中,您应该能够使用以下行,而不是单独设置每个字段:

c.setTimeInMillis(Long.parseLong(s));

由于s您有dateField.getDate().getTime()等于myFileTime,根据您提供的代码,从 1970 年 1 月 1 日开始的秒数。

stringToDate只有当您的字符串具有以下格式时,您才应该工作:ddMMyyyy. 另请注意,在这种情况下,您应该使用SimpleDateFormat进行解析,例如:

Date updatedate = new java.text.SimpleDateFormat("ddMMyyyy HH:mm:ss").parse(date);
于 2012-11-22T08:42:05.380 回答