String向Date转换的问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 23:29:37
public class riqi {
public static void main(String[] args){
String mytimestr="1986-10-03 00:00:00";
Date mydate=Date.valueOf(mytimestr);
System.out.println(mydate);
}
}
以上代码是会出错的。
恩~~是这样子的:我的数据库里定义的类型为“datetime”,输入数据时,我输入“1986-10-02”时它储存的数据就自动变成“1986-10-02 00:00:00”了,我把这串数据转换成了String型,并修改了一下,变成“1986-10-03 00:00:00”,再执行Date mydate=Date.valueOf(1986-10-03 00:00:00);时就出错了,如上面的出错,请问,怎么解决这个问题?也就是说,我输入一定的数据后,它自动变换成1986-10-03 00:00:00的格式,但是,变成这样的格式后,又转不回数据库的datetime类型了,那怎么样才可以使之转换回数据库的datetime类型。谢谢!!
“我的酒窝儿”和“天神smile”都说到了用SimpleDateFormat的方法,但是,不知道是不是我处理得不对,我试过了不行的…因为我要的是“1988-10-26 00:00:00.0”向“1988-10-26”转换,而不是“1988-10-26”向“1988-10-26 00:00:00.0”转换,前者那样好像是转化不了的。

基于天神smile还谈到了“处理日期最后使用varchar*****”让我长了见识,而最近我的酒窝儿回答我的问题都赚够分啦^_^,所以这个题目的分数就给天神smile了~~^_^。

谢谢你们!

最近在赶项目比较忙上来的机会就少了。

找个你没解决的问题回答了

由于数据库的datetime有他自己的格式如果输入不全的话会自动补全

1、至于解决办法 这里数据库最好使用varcahr类型,做小项目你可能感觉不到,因为在涉及国际化的时候这个时间格式非常难控制的。各个国家的时间日期表示都不一样,所以一般是将用户输入的时间在后台整理一下,然后放入数据库。

2、 当数据库类型是datetime取出的时候可以用String类型的取出,取出以后经过修改可以在通过String 类型进行存入 但是格式要对。

对于格式的规范可以使用这样的写法 当然方法很多 写个最简单的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date());

这样可以将你取出的datetime类型的数据修改后在规范日期后放入数据库

注意这里如果不按照正确的格式 存入 将自动补全。也就是你出现的情况;

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Riqi {
public static void main(String[] args){
String mytimestr="1986-10-03 00:00:00";

DateFormat df = new SimpleDateFormat("yyyyMMdd");
Date dt=null;
try {
dt=df.parse(myti