java中关于讲text转换成其他类型的方法都在:
java.text.Format
Direct Known Subclasses:
DateFormat; MessageFormat; NumberForMat
//所以可以将text转换成Date,message 和 数字。
对于日期转换来说,最常用的是:
java.text.SimpleDateFormat
final DateFormat TIMESTAMP_FORMAT;
TIMESTAMP_FORMAT= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//定义了一个format,意思是用这种格式来解释需要转换的字符串。
TIMESTAMP_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
//将需要转换的字符串当做GMT对待。
Date date = TIMESTAMP_FORMAT.parse("2011-03-10 04:18:00");
//将字符串转换为date。且字符串必须符合"yyyy-MM-dd HH:mm:ss"的格式,否则会出错。
需要注意的是,格式里的字母大小写非常重要。
比如hh 表示小时是12小时制的。而HH表示是24小时制的。具体可以参考SimpleDateFormat class javadoc.
另外,还需要注意的是timezone的问题。
上文中使用了GMT,因此在parse的时候,会认为字符串代表的是GMT时间。如果不使用timezone,则会用本地的zone。
也可以使用TimeZone.getDefault()来取得本地zone。一样的效果。
另外,现在date已经不那么常用了,取而代之的是Calendar。我们可以这样实例化一个calender:
Date fileDate;
Calendar fileCal = Calendar.getInstance();
fileCal.setTime(fileDate);
我犯过的一个错误是,一个程序读一个文件的内容,需要用当前的时间和文件中记的时间做比较后做统计。结果该文件中的时间是本地服务器的时间,而我用的时间是GMT时间,导致统计出来的数据全都是0.
这都是需要注意的地方。
还经常犯糊涂的是。debug到date的时候,总是看到显示的时间不是2011-03-10 04:18:00,就奇怪。其实,所有的date类型,包括在databsase中也是,都是存储的一个整型数字,而且是从某个时间开始的秒数。
2011-03-10 04:18:00被parse以后,实际存的是GMT时间。但是debug显示的时候,会根据computer上的timezone转化一下。所以看到的就不是设置的那个时间了。
附加一个将字符串转换成int:
public void setHousekeepingDay(String housekeepingDay){
this.housekeepingDay = Integer.parseInt(housekeepingDay);
}