java字符串 日期_Java中字符串格式的日期比较详解

日期的比较是两日期之间进行对比了下面我们来看一篇关于Java中字符串格式的日期比较吧,希望此文章能够对各位同学带来帮助,具体的步骤细节如下.

在实际开发中,有的小伙伴会遇到一些日期处理的问题,最比如日期的比较。有时候日期并不是Date类,而是以字符串来表示的,like this : 1994-09-11,这种日期是没办法直接比较的,这就需要我们将它先格式化了,这里就用到了DateFormat类了。

先上代码:

 代码如下复制代码
public boolean compareDate(String startDate, String endDate) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

Date sDate = sdf.parse(startDate);

Date eDate = sdf.parse(endDate);

if (eDate.before(sDate)) {

return false;

} else {

return true;

}

} catch (ParseException e) {

e.printStackTrace();

}

return false;

}

我们这里并没有用到DateFormat类,用的是SimpleDateFormat类,它是DateFormat类的一个子类,这个先不说。

看代码,先构造一个format对象sdf,然后用用sdf将输入的两个字符串格式化成日期,其格式化的方式由你传入的字符串决定,此处是yyyy-MM-dd,因为我要传入的字符串就是1994-09-11这种格式的。然后用sdf的before方法来比较两个日期的大小,是不是很方便呢?

在实际中用的最多的还是SimpleDateFormat类,作为DateFormat的子类, SimpleDateFormat类显然比DateFormat拥有更多的功能,他还能将标准日期格式化成你想要的日期格式,下面是示例代码:

 代码如下复制代码
public String formatDate(Date date){

SimpleDateFormat formater = new SimpleDateFormat("yyyy年MM月dd日"); //通过构造方法设置模板

String dateString  = formater.format(date);

formater.applyPattern("yyyy.MM.dd");//重新设置格式化模板

dateString = formater.format(date);

return dateString;

}

例子

 代码如下复制代码

public class Timetest {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str1="2015-02-08 20:20:20";

String str2="2015-01-08 10:10:10";

int res=str1.compareTo(str2);

if(res>0)

System.out.println("str1>str2");

else if(res==0)

System.out.println("str1=str2");

else

System.out.println("str1

}

}

当然我们可以先尝试来检查判断一个字符串是不是一个合法的日期格式

例子,

 代码如下复制代码

public static boolean isValidDate(String str) {

boolean convertSuccess=true;

// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");

try {

// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01

format.setLenient(false);

format.parse(str);

} catch (ParseException e) {

// e.printStackTrace();

// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对

convertSuccess=false;

}

return convertSuccess;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值