在java中从MM/DD/YYYY到DD-MMM-YYYY

在java中从MM/DD/YYYY到DD-MMM-YYYY,java,date-format,Java,Date Format,Java中是否有一种方法可用于将MM/DD/YYYY转换为DD-MMM-YYYY 例如:05/01/1999至01-MAY-99 谢谢 使用SimpleDateFormat解析日期,然后使用SimpleDateFormat以所需格式打印出来 下面是一些代码: SimpleDateFormat format1 = new SimpleDateFormat("MM/dd/yyyy"); SimpleDateFormat format2 = new SimpleDateFormat("

Java中是否有一种方法可用于将
MM/DD/YYYY
转换为
DD-MMM-YYYY

例如:
05/01/1999
01-MAY-99


谢谢

使用SimpleDateFormat解析日期,然后使用SimpleDateFormat以所需格式打印出来

下面是一些代码:

    SimpleDateFormat format1 = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yy");
    Date date = format1.parse("05/01/1999");
    System.out.println(format2.format(date));
输出:

01-May-99
下面的方法应该有效

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
Date oldDate = df.parse(df.format(date)); //this date is your old date object
试试这个

Date currDate = new Date();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String strCurrDate = dateFormat.format(currDate);
System.out.println("strCurrDate->"+strCurrDate);
试试这个

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // Set your date format
        String currentData = sdf.format(new Date());
        Toast.makeText(getApplicationContext(), ""+currentData,Toast.LENGTH_SHORT ).show();
java.time 您应该在Java8和更高版本中使用java.time类。要使用java.time,请添加:

下面是一个示例,说明如何设置日期格式

DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
String date = "15-Oct-2018";
LocalDate localDate = LocalDate.parse(date, formatter);

System.out.println(localDate); 
System.out.println(formatter.format(localDate));

Java 8 LocalDate

请注意,您的模式语法实际上是无效的。年为
y
,月为
d
Y
没有意义,
D
是一年中的一天。您想从
MM/dd/yyyy
转换为
dd-MMM-yyyy
。谢谢。作为Java新手,向我指出这一点非常有帮助。您应该在选项中使用Locale.English:您可能需要向SDF构造函数提供
Locale
,否则它将只使用平台默认的Locale作为月份名称,这可能不是您想要使用的。非常正确,您还可以使用
format1.setTimeZone(TimeZone.getTimeZone(“GMT”))设置时区
对于稍后讨论此问题的读者:
SimpleDateFormat
类早已过时,并且出了名的麻烦。不要用它。自2014年以来,我们在及其
DateTimeFormatter
中取得了长足进步。请参阅。@Billal,如果您添加了导入java.time.*;在代码块中。然后还应该添加类名定义。我只是想澄清一下开发人员我使用的是哪种软件包是的,这是非常正确的,我实际上忘记了回滚我的编辑,对不起,谢谢。我建议始终明确指定翻译月份名称所需的预期的
Locale
。这里我们将使用与英语相关的内容,例如
Locale.CANADA
Locale.US
Locale.UK
。作为可选的第二个参数传递给模式的
方法。运行时的当前默认语言环境可能不是英语,在这种情况下,此输入代码将失败,引发异常。对于Java 6和7,Three Ten Backport项目中必须提供Java.time功能。因此,无需再使用糟糕的
日期
/
日历
/
SimpleDateFormat
类。仅供参考,像和
java.text.SimpleDateFormat等非常麻烦的旧日期时间类现在被java 8及更高版本中内置的类所取代。看见
import java.time.* ;
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
String date = "15-Oct-2018";
LocalDate localDate = LocalDate.parse(date, formatter);

System.out.println(localDate); 
System.out.println(formatter.format(localDate));
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate = LocalDate.now();
System.out.println("Formatted Date: " + formatter.format(localDate));