`
kungstriving
  • 浏览: 131867 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

日期Date格式判断

    博客分类:
  • Java
阅读更多
在一般的WEB编程中,经常会碰到字符串形式的日期,需要将这个日期转化为Date对象来使用或是存储。这是一个比较常用的功能,我们有必要将它抽取出来做成一个小工具,以备后需!

我在这里说的只是日期Date,不包括时间Time YYYY-MM-DD



    private static final String DATESTRING_CONTAINS_1 = "-";
    private static final String DATESTRING_CONTAINS_2 = "/";
    private static final String DATESTRING_CONTAINS_3 = ":";

/** *//**
     * 判断该字符串是否为正确格式的时间
     * YYYY-MM-DD YYYY:MM:DD YYYY/MM/dd
     * 注意加入对于月份和天数的判断还有闰年 比如2月28日
     * @param dateString
     * @return
     */
    public static boolean isRightDateFormat(String dateString) ...{
       
        String delimer = "";
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_1)) ...{
            delimer = StringUtils.DATESTRING_CONTAINS_1;
            return dateFormatHelper(dateString, delimer);
        }
       
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_2)) ...{
            delimer = StringUtils.DATESTRING_CONTAINS_2;
            return dateFormatHelper(dateString, delimer);
        }
       
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_3)) ...{
            delimer = StringUtils.DATESTRING_CONTAINS_3;
            return dateFormatHelper(dateString, delimer);
        }
       
        return false;
    }

//date判断辅助类
    private static boolean dateFormatHelper(String dateString, String delimer) ...{
        String [] tempSplits = new String[3];
        try ...{
            if (StringUtils.containsString(dateString, delimer)) ...{
                tempSplits = dateString.split(delimer);
                if ((Integer.parseInt(tempSplits[0])>=0 && Integer.parseInt(tempSplits[0]) <=3000)
                        && (Integer.parseInt(tempSplits[1]) >=1 && Integer.parseInt(tempSplits[1]) <=12)
                        && (Integer.parseInt(tempSplits[2]) >=1 && Integer.parseInt(tempSplits[2]) <=31)) ...{
                    //获得当前月份 如果是 4 6 9 11月份则应该是30天
                    int tmpMonth = Integer.parseInt(tempSplits[1]);
                    int tmpDate = Integer.parseInt(tempSplits[2]);
                    int tmpYear = Integer.parseInt(tempSplits[0]);
                   
                    if(tmpMonth == 4
                            || tmpMonth == 6
                            || tmpMonth == 9
                            || tmpMonth == 11) ...{
                        if (tmpDate > 30) ...{
                            return false;
                        }
                    } else if (tmpMonth == 2) ...{
                        //对于2月份天数的判断
                        if (tmpYear%4 == 0) ...{
                            if (tmpDate > 29) ...{
                                return false;
                            }
                        } else ...{
                            if (tmpDate > 28) ...{
                                return false;
                            }
                        }
                    }
                    return true;
                } else ...{
                    return false;
                }
            }
        } catch (NumberFormatException e) ...{
            // TODO Auto-generated catch block
            return false;
        }
        return false;
    }

/** *//**
     * 通过dateString得到Date对象
     * DateString的格式必须为 YYYY-MM-DD YYYY:MM:DD YYYY/MM/dd
     *
     * @param dateString
     * @return
     */
    public static Date getDateByString(String dateString) ...{
//       
//        if (!isRightDateFormat(dateString)) {
//            return null;
//        }
       
        Date retDate = null;
        SimpleDateFormat sdf = new SimpleDateFormat();
       
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_1)) ...{
            sdf.applyPattern("yyyy-MM-dd");
        }
       
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_2)) ...{
            sdf.applyPattern("yyyy/MM/dd");
        }
       
        if (StringUtils.containsString(dateString, StringUtils.DATESTRING_CONTAINS_3)) ...{
            sdf.applyPattern("yyyy:MM:dd");
        }
       
        try ...{
            retDate = sdf.parse(dateString);
        } catch (ParseException e) ...{
            retDate = null;
        }
        return retDate;
    }
在这里还对闰年,闰月,30天的月份进行了判断

使用:可以先调用isRightDateFormat方法判断字符串是否正确格式,再调用getDateByString获得Date对象

或者直接调用getDateByString方法,但要将其中注释掉的那两行添上

分享到:
评论

相关推荐

    JAVA日期判断方法小结

    "JAVA日期判断方法小结" 在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```...

    比较date类型 判断两个日期的早晚

    ### 比较Date类型:判断两个日期的早晚 在Java编程中,处理日期是非常常见的需求之一。尤其是在涉及时间排序、日程管理等场景时,能够准确地比较两个`Date`对象的先后顺序至关重要。本文将详细介绍如何在Java中比较...

    NextDate()函数判断输入日期的下一天(C语言编写)

    根据给定的信息,本文将详细解释“NextDate()函数判断输入日期的下一天(C语言编写)”这一知识点。文章将分为几个部分:背景介绍、关键函数解析、日期合法性检查功能解析以及完整的程序运行逻辑。 ### 背景介绍 ...

    js验证日期格式,比较日期大小,判断两日期年月是否相同借鉴.pdf

    以上三个函数提供了JavaScript中处理日期的基本能力:比较日期大小、验证日期格式以及判断两个日期是否在同一个月份。这些函数可以很好地帮助开发者在Web应用中进行日期相关的逻辑处理,从而提高应用程序的功能性和...

    验证日期格式date

    以上代码示例提供了一种完整的日期格式验证方法,包括了正则表达式的使用、年月日的有效性检查以及闰年的判断等关键步骤。这种方法不仅可以应用于简单的日期验证场景,也可以根据实际需求进行扩展,例如增加对其他...

    数据库转换日期格式

    其中`Date`是要格式化的日期,`NamedFormat`是用于指定输出格式的标识符。 - `vbGeneralDate (0)`:默认格式,默认显示为“月/日/年”或“小时:分钟:秒”。如果未指定,则使用此值。 - `vbLongDate (1)`:使用长...

    Js获取当前日期时间及格式化代码

    - 常见的日期时间格式化方法可以将Date对象转换为指定格式的字符串。 - `Date.prototype.isLeapYear` 方法判断是否为闰年。 - `Date.prototype.Format` 方法自定义格式化日期时间。 - 格式化中常用的是:YYYY...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    java中Date的格式.pdf

    在给定的文件中,我们看到了三个示例,它们分别展示了如何创建Date对象、格式化日期以及解析日期字符串。 1. **创建Date对象并获取时间戳**: 在`DateExample1` 类中,通过 `new Date()` 创建了一个表示当前系统...

    日期类 Date 日期的基本运算

    本篇文章将深入探讨如何设计一个功能完备的日期类Date,并实现日期的基本运算,包括日期增加天数、减少天数以及计算两个日期之间相差的天数。 首先,从类的设计入手,日期类Date应当包含年(year)、月(month)、日...

    mysql 各种格式判断

    为了判断给定字符串是否符合正确的日期格式,可以创建一个名为 `fc_ck_date` 的函数。该函数接受一个 CHAR 类型的参数 `p_cont`,并返回一个 tinyint 类型的结果,表示该字符串的日期格式是否正确。函数的具体实现...

    C++实现日期类(Date类)的方法

    在C++编程语言中,创建自定义的日期类...这只是一个基础的Date类实现,实际应用中可能需要添加更多的功能,如日期格式化、日期有效性检查等。理解并掌握这些基本概念,将有助于你在C++中更有效地处理日期相关的任务。

    用js来验证日期的格式正确与否

    ### 使用JavaScript验证日期格式 在Web开发中,经常需要对用户输入的数据进行验证,确保其符合预期的格式或规则。本文将详细介绍如何使用JavaScript来验证日期格式的正确性。我们将通过一个具体的示例来探讨这一...

    判断是否是时间、日期字符串

    判断所传入的字符串是不是时间类型,日期类型,如果是日期类型可以转换成Date类型

    vb IsDate判断字符串是否为日期或时间.rar

    vb 判断字符串是否为日期或时间,在输入框输入任意字符串类型,程序将会判断出该字符串是否是时间字符串,这个判断方法VB员自带有函数,使用IsDate即可实现,下面是使用IsDate的简单用法示例:  If IsDate(Text1) =...

    天空教室作业 写一个日期类Date

    本资源摘要信息涵盖了 C++ 程序设计的基础知识点,包括日期类 Date 的设计和实现、圆类 Circle 的设计和实现,以及点类 Point 的设计和实现。 一、日期类 Date 的设计和实现 在 C++ 程序设计中,日期类 Date 是一...

    判断时间日期大小

    本篇博文主要探讨的是如何在JavaScript中判断两个时间日期的大小。JavaScript内置了Date对象,可以用来创建、操作和比较日期。以下是对这个主题的详细说明: 首先,我们需要了解JavaScript中的Date对象。Date对象...

    PB 常用函数说明 PB日期转换 PB格式转换

    ### PB日期转换与格式转换详解 PowerBuilder(简称PB)是一种快速应用开发工具,用于创建企业级客户端/服务器和Web应用程序。在PB中,日期和时间处理是常见且重要的功能,涉及多种函数来帮助开发者进行日期转换、...

    iOS日期格式化类(刚刚、一分钟前、昨天、周几)

    在iOS开发中,日期和时间的格式化是一个常见的任务,特别是在显示用户友好的时间戳时。"iOS日期格式化类(刚刚、一分钟前、昨天、周几)"这个主题聚焦于如何利用Objective-C来处理日期的本地化显示,使得时间表述更加...

    python判断给定的字符串是否是有效日期的方法

    这里python判断给定的字符串是否是一个有效的日期,如果是一个日期格式的字符串,该函数返回True,否则返回False def is_valid_date(str): '''判断是否是一个有效的日期字符串''' try: time.strptime(str, %Y-%m...

Global site tag (gtag.js) - Google Analytics