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

Posted

tags:

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

比较有针对性的问一下,
我需要对日期进行加减运算,运算后通过SimpleDateFormat().Format()转换成了规整的YYYY-MM-DD的字符串格式(这部分代码是我从网上copy下来的),但是我需要的是日期格式,继续和其他日期做比较,代码片段如下:

String st = "2006-07-20";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(st);
System.out.println(d);

输出结果是:Thu Jul 20 00:00:00 CST 2006

我想要的结果是把字符串2006-07-20变成日期格式的2006-07-20;
求解答

你执行了sdf.parse(st); 后就已经是date了  你要去和其他时间做比较的话可以直接比较

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author hp
*/
public class test 
    public static void main(String args[]) 
       int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
       System.out.println("i=="+i);
    
    public static int compare_date(String DATE1, String DATE2) 
        
        
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        try 
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() > dt2.getTime()) 
                System.out.println("dt1 在dt2前");
                return 1;
             else if (dt1.getTime() < dt2.getTime()) 
                System.out.println("dt1在dt2后");
                return -1;
             else 
                return 0;
            
         catch (Exception exception) 
            exception.printStackTrace();
        
        return 0;
    

参考技术A public static void main(String[] args) throws ParseException 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
String dd = format.format(d);
Date ddd;
ddd = format.parse(dd);
System.out.println("dd>>>>  " + dd);
System.out.println("ddd>>>  " + format.format(ddd));

参考技术B java中使用的日期时间类一个sql包下的Date
一个util包下的Date还有Calendar,这3个类对于时间的计算方式都是使用的时间戳来记录时间的,你的题目中“日期格式的2006-07-20”在java中是不存在的,2006-07-20就只能是个字符串,做不了时间的,计算机是没法对这么个字符串时间进行处理和计算的
参考技术C 日期对象Date,据我所知,没办法形成2006-07-20这样的输出,如果你是用system.out.println(new Date());

实际上行,是调用了Date类型的toString()方法转换为字符串输出。

Date类型如果想按照自己的格式输出,只能格式化为字符串。

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中如何将字符串转换成日期型

java中怎么把Long转换成日期格式

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

java怎么将String转换成日期

java中将日期日期如何转换成另一种格式??高手!!!

java怎么将String转换成日期