【问题标题】:Getting date in format dd-MMM-yyyy以 dd-MMM-yyyy 格式获取日期
【发布时间】:2014-03-21 07:15:49
【问题描述】:

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

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 格式存储日期。

我该怎么办?

【问题讨论】:

  • 2014-07-23 是输入字符串
  • 现在你想要23-JUL-2014
  • 您尝试执行的代码是什么,您的实际输入、预期输出和实际输出是什么?
  • @Maba 是的,我想要 2014 年 7 月 23 日的格式
  • 按照@JBNizet 所说的去做。用更多信息更新您的问题。

标签: java date


【解决方案1】:

现在我想更改格式我想以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 并发送到数据库不会影响和更改任何内容。

【讨论】:

    【解决方案2】:

    试试这个代码

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

    【讨论】:

    • 对。一定很难看出asiya在哪里指定了pattern,然后把它改成你想要的pattern。
    【解决方案3】:

    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());
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 2021-08-17
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多