Java日期问题
当我将1949年之前的日期传递到下面的方法时,我对java日期有一个问题。 例如,我返回的日期是2049,我知道它与日期格式有关,我认为使用yyyy而不是RRRR可以解决这个问题。但是我不明白为什么或者如何去爱它。任何帮助都将非常感激Java日期问题,java,formatting,date,Java,Formatting,Date,当我将1949年之前的日期传递到下面的方法时,我对java日期有一个问题。 例如,我返回的日期是2049,我知道它与日期格式有关,我认为使用yyyy而不是RRRR可以解决这个问题。但是我不明白为什么或者如何去爱它。任何帮助都将非常感激 public static java.sql.Date parseDate(String date) throws ParseException { if (date != null) { SimpleDateFormat dateFormat = ne
public static java.sql.Date parseDate(String date) throws ParseException {
if (date != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
return new java.sql.Date(dateFormat.parse(date).getTime());
}
return null;
}
谢谢Jon,让我为你格式化一下
public static java.sql.Date parseDate(String date) throws ParseException {
if (date != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
return new java.sql.Date(dateFormat.parse(date).getTime());
}
return null;
}
我怀疑这就是你想要的
private Date convertDate() throws ParseException
{
String dateStr = "21-02-2010";
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = null;
if (dateStr != null)
{
date = new Date(dateFormat.parse(dateStr).getTime());
}
System.out.println(date);
return date;
}
2010年2月21日,您将获得。。。
太阳2010年2月21日00:00:00 GMT
1938年2月21日,您将获得。。。
1938年2月21日星期一00:00:00 GMT
这有用吗?我可能是因为您的代码中有MMM。tl;博士
时区
您的代码忽略了时区这一关键问题。确定日期需要时区。在任何一个特定的时刻,世界各地的日期都因地区而异
您的代码使用始终以UTC为单位的日期。因此,从错误命名的date
类生成的日期值对于UTC是准确的,但对于其他时区(如美洲/蒙特利尔
或亚洲/加尔各答
)无效
使用java.time
完成这项工作的现代方法是使用java.time类来取代麻烦的旧遗留日期时间类
该类表示一个仅限日期的值,不包含一天中的时间和时区
要解析传入字符串,请使用DateTimeFormatter
定义格式模式。为翻译月份名称时使用的人类语言指定区域设置
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMM-uuuu" , Locale.US );
LocalDate localDate = LocalDate.parse( "12-Jan-2017" , f );
使用JDBC4.2及更高版本,您可以使用setObject
和getObject
方法将LocalDate
直接传递到数据库
对于尚未更新的JDBC驱动程序,请返回java.sql类型
java.sql.Date sqlDate = java.sql.Date.valueOf( localDate );
LocalDate localDate = sqlDate.toLocalDate();
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如、、和。字符串日期是什么样子的?注释:1)您应该使用
java.util.Date
而不是java.sql.Date
。2) 您应该使用Joda Time而不是java.util.Date
“我对java Date有问题”-没关系,每个人都有
java.sql.Date sqlDate = java.sql.Date.valueOf( localDate );
LocalDate localDate = sqlDate.toLocalDate();