我想转换String
成Date
不同的格式.
例如,
我来自用户,
String fromDate = "19/05/2009"; // i.e. (dd/MM/yyyy) format
Run Code Online (Sandbox Code Playgroud)
我想将其转换fromDate
为"yyyy-MM-dd"
格式的Date对象
我怎样才能做到这一点?
Mic*_*ers 176
看看SimpleDateFormat
.代码如下:
SimpleDateFormat fromUser = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
String reformattedStr = myFormat.format(fromUser.parse(inputString));
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
小智 12
使用SimpleDateFormat
课程:
private Date parseDate(String date, String format) throws ParseException
{
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.parse(date);
}
Run Code Online (Sandbox Code Playgroud)
用法:
Date date = parseDate("19/05/2009", "dd/MM/yyyy");
Run Code Online (Sandbox Code Playgroud)
为了提高效率,您需要将格式化程序存储在散列映射中.hashmap是util类的静态成员.
private static Map<String, SimpleDateFormat> hashFormatters = new HashMap<String, SimpleDateFormat>();
public static Date parseDate(String date, String format) throws ParseException
{
SimpleDateFormat formatter = hashFormatters.get(format);
if (formatter == null)
{
formatter = new SimpleDateFormat(format);
hashFormatters.put(format, formatter);
}
return formatter.parse(date);
}
Run Code Online (Sandbox Code Playgroud)
Bas*_*que 11
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
Run Code Online (Sandbox Code Playgroud)
其他答案用java.util.Date
,java.sql.Date
和SimpleDateFormat
现在已经过时.
LocalDate
日常时间的现代方法是使用java.time类,特别是LocalDate
.该LocalDate
级表示没有时间一天和不同时区的日期,唯一的价值.
DateTimeFormatter
要解析或生成表示日期时间值的String,请使用DateTimeFormatter
该类.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
Run Code Online (Sandbox Code Playgroud)
不要将日期时间对象与表示其值的String混淆.一个日期时间对象有没有格式,而字符串中.日期时间对象(例如LocalDate
)可以生成表示其内部值的String,但日期时间对象和String是不同的不同对象.
您可以指定任何自定义格式以生成String.或者让java.time完成自动本地化的工作.
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH ) ;
String output = ld.format( f );
Run Code Online (Sandbox Code Playgroud)
转储到控制台.
System.out.println( "ld: " + ld + " | output: " + output );
Run Code Online (Sandbox Code Playgroud)
ld:2009-05-19 | 输出:mardi 19 mai 2009
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.java.sql.*
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval
,YearWeek
,YearQuarter
,和更多.
将字符串日期转换为java.sql.Date
String fromDate = "19/05/2009";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dtt = df.parse(fromDate);
java.sql.Date ds = new java.sql.Date(dtt.getTime());
System.out.println(ds);//Mon Jul 05 00:00:00 IST 2010
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
257880 次 |
最近记录: |