java字符串转换成日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字符串转换成日期相关的知识,希望对你有一定的参考价值。

请问如何将一个字符串转换成日期格式?
要求:输入一组字符串,如果是日期格式就输出指定日期,如果是不是合法的日期格式就输出原来的字符串!
如:
"today is 20080830" 输出 "today is 2008-08-30"
"今天的日期是20080830" 第一种输出 "今天的日期是2008-08-30"
"今天的日期是20080830" 第二种输出 "今天的日期是2008年08月30"
"the project is 7899744" 输出 "the project is 7899744"有兴趣的可以加我Q:351531104

参考技术A 取字符串的后8位,用正则验证一下是不是日期,如果是日期,用Format格式一下就可以,如果不是日期,则直接输出 参考技术B public static void main(String[] args)
String str = "today is 20080830" ;
Pattern p =Pattern.compile("\\d8");
Matcher m = p.matcher(str) ;
StringBuffer sb = new StringBuffer();
DateFormat df1 = new SimpleDateFormat("yyyyMMdd");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df3 = new SimpleDateFormat("yyyy年MM月dd日");
while(m.find())
try
//判断8位字符串是否是合法日期格式
if(df1.format(df1.parse(m.group())).equals(m.group()))
//m.appendReplacement(sb, df2.format(df1.parse(m.group())));
m.appendReplacement(sb, df3.format(df1.parse(m.group())));
else
System.out.println(str);
return ;

catch (ParseException e)
e.printStackTrace();


m.appendTail(sb);
System.out.println(sb.toString());
参考技术C subString取后8位,时间类里有Format 参考技术D 可以用SimpleDateFormat类进行转化 第5个回答  2013-04-18 用SimpleDateFormat转换

VB 如何把access中的字符串日期转换成日期格式并能计算日期

例如字段sDate的某值为09.11.2012,是月日年的格式,怎么在查询时使用select命令查询9月11日到9月12日之间的人数

VB对于字符串的运用已经非常好了。
那么关于ACCESS的运用如下解释:
1:字符串转换日期格式
A类:CDATE函数转换,将字符串直接转换成日期。
例子:Print Cdate("1/1/2017")
结果:2017-01-01
B类:FORMAT函数转换
dim S as string
S="2017-1-1"
S="1/1/2017"
等等S类型,但是起码保证S字符串是日期响应内容,比如S="贰零壹柒年三月一日"看起来是日期,其实并非日期所需的字符串内容.
例子:Print Format(s,"YYYY-MM-DD")
后面的YYYY是年,YY是二位数的年,MM是二位数的月,一个M是不带0开头的月,DD同理。返回一个日期格式字符串。
------------------------------------------------------------
上诉是日期转换类,比较省事的是CDATE,比较自定义的是FORMAT,以比较另类的YEAR()函数+MONTH()函数=DAY()函数去获取字符串的对应年份,月份,日期。

下面说日期格式对比,加减等等。
A:DateADD("类1",类2,“日期格式”)
解释:类1=M就是计算月,D是日,Y是年。
类2,是一个数字,整形数字,不能有小数点,可以是正负。
日期格式,这个不用怎么解释了。
例子:Dateadd("m",1,"2017-01-01"),Dateadd("m",-1,"2017-01-01")
结果:2017-02-01 2016-12-01
解释:在2017-01-01的日期上,增加(1)个(m)月,第二个是增加(-1)个月,或者说是减少一个月。
M可是换成Y,成为减少年,换成D,减少天数。

B:DateDiff (interval, Date1 , Date2)
interval=Y,Q,M,D,W,H,N,S
分别是年,季度,月,日,星期,小时,分,秒等等。
例子:DateDiff("m","2016-01-01","2017-01-01")
结果:12个月,换成其他的,比如d=366天,比如h=8784小时,比如s=31622400秒

总结:
Cdate,Format 函数用来转换字符串到日期格式。
Year(),Month(),Day()获取字符串中的年份,月份,日
DadeAdd()将目标日期,增加或者减少指定数值的年月日等。
DateDiff()获取二个日期之间的时间差,而时间差根据指定参数获得。
其中Format("2017-1-1","aaaa")这个函数比较奇妙,结果是获取当前日期的星期,比如结果是【星期一】这样的中文结果,当然,这是因为我们的地区设置是中国,若是外国可能返回英语啊德语啊什么的。
不知道是否满足你的需求呢?若不能或者本人对命题理解错误,请回复我。
参考技术A access中你这个问题可以采用变通方式
利用mid函数
例如:
select * from xx where mid(sdate,1,2)="09" and (mid(sdate,4,2)="11" or mid(sdate,4,2)="12")
参考技术B 你用过那个数据库,我用access数据库的时候查询语句是这样的
Sqlstr = "select * from 销售详单 where 日期 >= #" + Format(DTPicker2.Value, "yyyy-mm-dd") + _
"# and 日期 <= #" + Format(DTPicker3.Value, "yyyy-mm-dd") + "#"
DTPicker3.Value是日历控件上选择的值本回答被提问者和网友采纳
参考技术C select ... from ... where datevalue(sdate)... 参考技术D SELECT * FROM 表名 WHERE sdate>=#2012-9-11# And sdate<=#2012-9-12#

以上是关于java字符串转换成日期的主要内容,如果未能解决你的问题,请参考以下文章

java怎么将String转换成日期

java怎么将String转换成日期

java 字符串转换成日期

求JAVA高手解答!有关于字符串类型转换成日期型!

java字符串格式转换成日期格式

Java中怎么把字符串转换成日期格式啊