转换日期格式

时间:2010-12-14 07:29:55

标签: java sql

我的日期为'14-Dec-2010'我希望获得给定日期的数字格式的月份。 也就是说,我想将日期转换为'14-12-2010'

5 个答案:

答案 0 :(得分:5)

DateFormat inFm = new SimpleDateFormat("d-MMM-y");
DateFormat outFm = new SimpleDateFormat("d-M-yyyy");
Date date = inFm.parse("14-Dec-2010");
String output = outFm.format(date);

通常,您应该在内部使用Date之类的日期时间类型,然后在输出时转换为String

答案 1 :(得分:1)

DateFormat format = new SimpleDateFormat("dd-MMM-yyyy");
Date date= format.parse("14-Dec-2010");

现在您可以使用任何格式打印日期对象 注意:月份从0开始,因此对于Dec,它将是11

答案 2 :(得分:1)

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatter {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Date date = new Date("14-Dec-2010"); //deprecated. change it to your needs
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
        System.out.println(df.format(date));

    }

}

答案 3 :(得分:1)

我认为这个SQL转换应该可以工作

SELECT CONVERT(datetime,'14 -Dec-2010',105)

答案 4 :(得分:0)

避免使用与最早版本的Java捆绑在一起的麻烦的旧日期时间类。它们设计糟糕且令人困惑。

java.time

旧的类被java.time框架取代。

对于没有时间且没有时区的仅限日期的值,请使用LocalDate类。

使用DateTimeFormatter解析字符串输入。

String input = "14-Dec-2010";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd-MMM-yyyy" );
LocalDate localDate = LocalDate.parse( input , formatter );

要以其他格式生成String,请定义另一个格式化程序。

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern( "dd-MM-yyyy" );
String output = localDate.format( formatter2 );

更好的是,让DateTimeFormatter自动本地化。

Locale l = Locale.CANADA_FRENCH ;  // Or Locale.US, Locale.ITALY, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( l );
String output = localDate.format( f );  // Generates String in a localized format.

SQL

对于SQL只传递对象,不要使用字符串。如果您的JDBC驱动程序符合JDBC 4.2规范,则在LocalDate上通过setObject传递PreparedStatement

myPrepStmt.setObject( localDate );

如果没有,请使用添加到旧类的新转换方法回退到旧java.sql.Date类。

java.sql.Date sqlDate = java.sql.Date.from( localDate );
myPrepStmt.setDate( sqlDate );