关于在java中将string转换成日期的问题
2011-04-23 10:01
295 查看
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);
}
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);
}
相关文章推荐
- JAVA string int Integer间的转换以及日期问题
- JAVA里面关于byte数组和String之间的转换问题
- JAVA里面关于byte数组和String之间的转换问题
- 在JAVA中将日期格式的string转换为Date
- JAVA里面关于byte数组和String之间的转换问题
- JAVA里面关于byte数组和String之间的转换问题
- JAVA中关于DATE时间日期加减、String与Date类型的转换
- 关于Java String 类型转换时null的问题(转)
- 关于Java String 类型转换时null的问题
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。
- JAVA里面关于byte数组和String之间的转换问题
- JAVA string int Integer间的转换以及日期问题
- JAVA关于byte数组与String转换的问题
- 深入 JAVA里面关于byte数组和String之间的转换问题
- 关于java将String类型的时间字符串转换为Date类型的问题
- 深入 JAVA里面关于byte数组和String之间的转换问题
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- 关于Java和C#自带日期转换类的异常问题