给定字符串:30/aug/2011:23:30:15想要转换成Java中的日期,以便进行日期相关的操作,在网上找到了如下代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Str2Date {
static public void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss");
Date dt = sdf.parse("30/Aug/2011:23:30:15");
System.out.println(dt);
}
}
可是在有些linux服务器上运行成功,但有些linux服务器下运行不成功,显示如下错误:
Exception in thread "main" java.text.ParseException: Unparseable date: "30/aug/2011:23:30:15"
at java.text.DateFormat.parse(DateFormat.java:357)
at Str2Date.main(Str2Date.java:7)
查了一些资料,终于搞清楚了,跟JDK的版本有关系,SimpleDateFormat使用了java.util.TimeZone,在某些JDK中TimeZone可能不支持3个字母的月份,为了解决这个问题,必须显式地使用US locale。
修改后代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Str2Date {
static public void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss",Locale.US);
Date dt = sdf.parse("30/aug/2011:23:30:15");
System.out.println(dt);
}
}
现在ok了。
******************************************************************************************
如果想要根据java的Date类得到给定日期属于星期几,小时等信息,可以使用java.util。Calendar,具体如下:
import java.text.SimpleDateFormat;
import java.util.*;
public class Str2Date {
static public void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss",Locale.US);
Date dt = sdf.parse("27/aug/2011:00:30:15");
System.out.println(dt);
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK); //周几,周日=1,周一=2...
System.out.println(w);
int hh = cal.get(Calendar.HOUR_OF_DAY); //得到小时,此例子为0
System.out.println(hh);
}
}
阅读(1255) | 评论(1) | 转发(0) |