java new date(str) 在tostring() 对象会报错?为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java new date(str) 在tostring() 对象会报错?为啥?相关的知识,希望对你有一定的参考价值。

String str = "1999-9-9 11:20:30";
Date d = new Date(str);
System.out.println(d.toString());

in thread "main" java.lang.IllegalArgumentException
at java.util.Date.parse(Date.java:615)

at java.util.Date.<init>(Date.java:272)
at comperable.test3.dateTimeString(test3.java:51)
at comperable.test3.main(test3.java:21)

传入的参数格式不对,你可以直接
Date d = new Date();
System.out.println(d.toString());
看下应该传入什么格式的参数(应该是这种格式Fri Jan 09 06:28:34 CST 2015)

String str = "Thu Jan 08 16:28:34 CST 2015";
Date d = new Date(str);
System.out.println(d.toString());
这段代码就不会报错
话说date与String的相互转换,百度一下有很多方法,这个Date d = new Date(str);这个方法已经过时了,不提倡使用。
参考技术A

Date d = new Date(str); 你这么写是没有(用法上)错误的,但是不可取

     Date类的 Date(Str) 构造方法已经过期,不赞成使用

     Date(Str) 构造方法,其源码内部,也是对str字符串进行解析,再装换成时间


由于在用法上没有错,那么你在使用new Date(str)实例对象时,str的格式不正确,导致解析错误,从错误信息也可以看出来

at java.util.Date.parse(Date.java:615) -- Date.parse() 解析方法出错


因为不赞成使用Date(str),所以不给你此方法的使用说,正确的方法如下:

try 
String str = "1999-9-9 11:20:30";
DateFormat df = new SimpleDateFormat("yyyy-M-d HH:mm:ss");
Date date = df.parse(str);
 catch (ParseException e) 
e.printStackTrace();

参考技术B 错误原因是:参数非法。
Date(String str) 这个构造函数已经不被推荐使用了,就是说它有bug。如果你一定要这么用的话,那你的参数要改为:"9 Sep 1999 11:20:30"
参考技术C 你那个API方法已经过时了;用这个吧:
String str = "1999-9-9 11:20:30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(str);
System.out.println(d.toString());
参考技术D 大写的m代表的是月,小写的m则是分钟,当然不能乱用。
日期格式:yyyymmdd
hh:mm:ss
yyyy:代表年份
mm:
代表月份
dd:
代表天
hh:
代表小时(24小时制)
mm:
代表分钟
ss:
代表秒

java date怎样赋值?

model.datecustspecsaved是一个date类型

java 中date赋值方法:

 1.通过new对象获取当前的时间复制给date;

 Date date=new Date();

2.通过SimpleDateFormat将字符串转换为date:

SimpleDateFormat format= new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
Date date=format.parse(str);//str表示yyyy年MM月dd HH:mm:ss格式字符串

3.通过Calendar获得date

Calendar calendar=Calendar.getInstance();
Date date=calendar.getTime();
参考技术A 你的代码是正确的,只不过format.parse(myDate)方法有声明抛出异常java.text.parseException。这是正常的,你只需要对这行代码捕获异常就可以了。如:
try
model.set_datecustspecsaved(format.parse(myDate));
catch(Exception e)
。。。
本回答被提问者采纳
参考技术B 需要try-catch一下 参考技术C 写个try/catch就可以了 参考技术D 没处理异常,写的小脚本么?

以上是关于java new date(str) 在tostring() 对象会报错?为啥?的主要内容,如果未能解决你的问题,请参考以下文章

java date怎样赋值?

c# 获取当前时间var str = DateTime.Now.Date.ToString("yyyyMMdd");

c# 获取当前时间var str = DateTime.Now.Date.ToString("yyyyMMdd");

Date.parse和new Date(str)的兼容性问题

Java 时间

new Date() 在iOS 的兼容