如何使用 SimpleDateFormat 格式化日期
how to format date using SimpleDateFormat
我无法格式化日期。
dateFormat.format()
接受 Date
作为参数。所以我创建了一个新的 Date()
它说下面的 Date() 方法已被弃用,我在 运行.
时得到了下面的异常
异常:
Exception in thread "main" java.lang.IllegalArgumentException at
java.util.Date.parse(Date.java:598)
public class MyDate {
public static void main(String[] args) {
Date date = new Date("2012-02-16T00:00:00.000-0500");
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss");
String stringDate = dateFormat.format(date);
System.out.println(stringDate); // how do I test this conversion??
}
}
我的数据库的日期格式为 - 2012-02-16T00:00:00.000-0500
我需要将其转换为以下格式的字符串:dd-MMM-yyyy HH:mm:ss
我正在使用 Java6
如果您想在日期“2012-02-16T00:00:00.000-0500”中阅读,您可能应该使用 SimpleDateFormat
to parse
,如下所示:
DateFormat parseFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = parseFormat.parse("2012-02-16T00:00:00.000-0500");
与您的其余代码一起写:
16-Feb-2012 05:00:00
SimpleDateFormat
documentation 中列出了解析格式模式字母。 T
用撇号转义。
此答案假设 Java 7,或者您将使用来自 Java 8
的新 date & time API
感谢@Andy Brown。除了 Andy Brown 的回答之外,我还发布了完整的片段
完整的解决方案:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SampleDate {
public static void main(String[] args) throws ParseException {
DateFormat parseFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = parseFormat.parse("2012-03-16T00:00:00.000-0500");
String strDate = parseFormat.format(date);
System.out.println(strDate);
// if you get date of type 'java.sql.Date' directly from database cursor like
//rs.getDate("created_date"), just pass it directly to format()
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss");
String stringDate = dateFormat.format(date);
System.out.println(stringDate);
}
}
/*
Output:
2012-03-16T01:00:00.000-0400
16-Mar-2012 01:00:00
*/
你也可以像这样把java.util.Date
转换成java.sql.Date
,
String dateString = "03-11-2012";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
java.util.Date date = dateFormat.parse(dateString);
java.sql.Date sqlDate = new Date(date.getTime());
// set the input param type as OracleTypes.DATE and pass the input param date as sqlDate
我无法格式化日期。
dateFormat.format()
接受 Date
作为参数。所以我创建了一个新的 Date()
它说下面的 Date() 方法已被弃用,我在 运行.
时得到了下面的异常异常:
Exception in thread "main" java.lang.IllegalArgumentException at
java.util.Date.parse(Date.java:598)
public class MyDate {
public static void main(String[] args) {
Date date = new Date("2012-02-16T00:00:00.000-0500");
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss");
String stringDate = dateFormat.format(date);
System.out.println(stringDate); // how do I test this conversion??
}
}
我的数据库的日期格式为 - 2012-02-16T00:00:00.000-0500 我需要将其转换为以下格式的字符串:dd-MMM-yyyy HH:mm:ss
我正在使用 Java6
如果您想在日期“2012-02-16T00:00:00.000-0500”中阅读,您可能应该使用 SimpleDateFormat
to parse
,如下所示:
DateFormat parseFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = parseFormat.parse("2012-02-16T00:00:00.000-0500");
与您的其余代码一起写:
16-Feb-2012 05:00:00
SimpleDateFormat
documentation 中列出了解析格式模式字母。 T
用撇号转义。
此答案假设 Java 7,或者您将使用来自 Java 8
的新 date & time API感谢@Andy Brown。除了 Andy Brown 的回答之外,我还发布了完整的片段
完整的解决方案:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SampleDate {
public static void main(String[] args) throws ParseException {
DateFormat parseFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = parseFormat.parse("2012-03-16T00:00:00.000-0500");
String strDate = parseFormat.format(date);
System.out.println(strDate);
// if you get date of type 'java.sql.Date' directly from database cursor like
//rs.getDate("created_date"), just pass it directly to format()
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss");
String stringDate = dateFormat.format(date);
System.out.println(stringDate);
}
}
/*
Output:
2012-03-16T01:00:00.000-0400
16-Mar-2012 01:00:00
*/
你也可以像这样把java.util.Date
转换成java.sql.Date
,
String dateString = "03-11-2012";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
java.util.Date date = dateFormat.parse(dateString);
java.sql.Date sqlDate = new Date(date.getTime());
// set the input param type as OracleTypes.DATE and pass the input param date as sqlDate