以格式dd-MMM-yyyy获取日期

时间:2014-03-21 07:15:49

标签: java date

我有如下所示的方法,其中日期是字符串:

public static java.sql.Date  getSimpleDate11(String dateString) {

if (dateString == null) {
    return null;
}
java.util.Date date = null;
java.sql.Date sqlDate =null ;
try {

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    df.setLenient(false);
    date = df.parse(dateString);
     sqlDate = new java.sql.Date(date.getTime());


} catch (ParseException pe) {
    throw new RuntimeException("The date entered is invalid or has incorrect format"+ dateString);
}
return sqlDate;

现在我要更改格式:我想以dd-MMM-yyyy格式存储日期。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

  

现在我想以格式dd-MMM-yyyy

更改我想要存储日期的格式

您不需要明确转换为请求的日期格式dd-MMM-yyyy 日期与日期格式无直接关系。在插入数据库表的日期字段之前,您的SQL驱动程序类将转换为正确的数据库特定格式。

使用MySQL驱动程序

// this statement will cause sql date as '2014-03-21'  
new java.sql.Date( new java.until.Date().getTime() );

在大多数数据库中,默认格式为YYYY-MM-DD

示例(MySQL)

mysql> show variables like 'date_format';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| date_format   | %Y-%m-%d |
+---------------+----------+
1 row in set (0.00 sec)

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2014-03-21 |
+------------+
1 row in set (0.05 sec)

详细示例

public class SimpleDateFormat_Example {
    public static void main(String[] args) throws Exception {
        String dateInputPattern = "yyyy-MM-dd"; // numeric 2 digit month
        String dateTargetPattern = "yyyy-MMM-dd"; // For 3 char month name
        String dateString = "2014-03-20";

        patternTest( dateInputPattern, dateString, dateTargetPattern );

        System.out.println();

        // day of month first and then 2 digit month
        dateInputPattern = "yyyy-dd-MM";  
        dateString = "2014-21-03";
        dateTargetPattern = "yyyy-MMMM-dd, EEEE"; // for Full month name

        patternTest( dateInputPattern, dateString, dateTargetPattern );
    } // psvm( ... )

    public static void 
    patternTest( String dateInputPattern, 
                 String dateString, 
                 String dateTargetPattern ) throws Exception {
        java.text.SimpleDateFormat sdf = 
            new java.text.SimpleDateFormat( dateInputPattern );
        java.util.Date date = sdf.parse( dateString );

        System.out.println( "Date Pattern: " + dateInputPattern );
        System.out.println( "Date String : " + dateString );
        System.out.println( "Date Value  : " + date );
        sdf.applyPattern( dateTargetPattern );
        System.out.println( "Target Pattern: " + dateTargetPattern );
        System.out.println( "Pattern based Date Value: " + sdf.format(date) );

        java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
        System.out.println( "But, SQL Date: " + sqlDate );
    } // patternTest( s, s, s )
} // end of class SimpleDateFormat_Example

如果您运行上述程序,您将看到以下结果。

结果

Date Pattern: yyyy-MM-dd
Date String : 2014-03-20
Date Value  : Thu Mar 20 00:00:00 IST 2014
Target Pattern: yyyy-MMM-dd
Pattern Formatted Date Value: 2014-Mar-20
But, SQL Date: 2014-03-20

Date Pattern: yyyy-dd-MM
Date String : 2014-21-03
Date Value  : Fri Mar 21 00:00:00 IST 2014
Target Pattern: yyyy-MMMM-dd, EEEE
Pattern Formatted Date Value: 2014-March-21, Friday
But, SQL Date: 2014-03-21

仔细查看SQL Date,它在所有输出中具有相同的模式。同样也与select curdate()模式的结果相匹配,如本答案的顶部所示。

结论

虽然您在脚本语言中为日期类型数据库字段设置并应用特定模式,但它只会存储在为数据库日期类型定义的default模式中。

因此,将模式从yyyy-MM-dd转换为yyyy-MMM-dd并发送到数据库不会影响和更改任何内容。

答案 1 :(得分:2)

试试这段代码

String PATTERN="yyyy-MM-dd";
SimpleDateFormat dateFormat=new SimpleDateFormat();
dateFormat.applyPattern(PATTERN);
String date1=dateFormat.format(Calendar.getInstance().getTime());

答案 2 :(得分:1)

java.util.Date.getTime()方法返回此Date对象表示的January 1, 1970, 00:00:00 GMT以来的毫秒数。

public static void main(String[] args) throws ParseException {

     String dateString="2014-03-21";
     DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
     Date date=df.parse(dateString);
     System.out.println("date:"+date);
     df=new SimpleDateFormat("dd-MMM-yyyy");
     System.out.println("Formated Date:"+df.format(date));
     System.out.println("date.getTime"+date.getTime());


}