我有如下所示的方法,其中日期是字符串:
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格式存储日期。
我该怎么办?
答案 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());
}