Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中更改日期格式?_Java_Date - Fatal编程技术网

如何在Java中更改日期格式?

如何在Java中更改日期格式?,java,date,Java,Date,我需要使用Java从更改日期格式 dd/MM/yyyy to yyyy/MM/dd 使用 完整示例: import java.text.SimpleDateFormat; import java.util.Date; public class JavaSimpleDateFormatExample { public static void main(String args[]) { // Create Date object. Date date

我需要使用Java从更改日期格式

 dd/MM/yyyy  to yyyy/MM/dd
使用

完整示例:

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

public class JavaSimpleDateFormatExample {
    public static void main(String args[]) {
        // Create Date object.
        Date date = new Date();
        // Specify the desired date format
        String DATE_FORMAT = "yyyy/MM/dd";
        // Create object of SimpleDateFormat and pass the desired date format.
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        /*
         * Use format method of SimpleDateFormat class to format the date.
         */
        System.out.println("Today is " + sdf.format(date));
    }
}

这将实现如何使用以下方法从一种日期格式转换为另一种日期格式的技巧:


或者你可以选择regex路线:

String date = "10/07/2010";
String newDate = date.replaceAll("(\\d+)/(\\d+)/(\\d+)", "$3/$2/$1");
System.out.println(newDate);
它也是双向的。当然,这实际上不会验证您的日期,也适用于“21432/32423/52352”之类的字符串。您可以使用
“(\\d{2})/(\\d{2})/(\\d{4}”
更准确地表示每组中的位数,但它只能从dd/MM/yyyy到yyyy/MM/dd工作,而不再以相反的方式工作(仍然接受其中的无效数字,如45)。如果您给它一些无效的数字,如“blablablabla”,它将返回相同的数字

SimpleDateFormat newDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date myDate = newDateFormat.parse("28/12/2013");
newDateFormat.applyPattern("yyyy/MM/dd")
String myDateString = newDateFormat.format(myDate);
现在MyDate=2013/12/28 2017/01/23

避免遗留日期时间类 是正确的,但已过时。诸如和
java.text.SimpleTextFormat
等麻烦的旧日期时间类现在已被这些类取代

使用java.time 将输入字符串解析为日期时间对象,然后以所需格式生成新的字符串对象

该类表示一个仅限日期的值,不包含一天中的时间和时区

DateTimeFormatter fIn = DateTimeFormatter.ofPattern( "dd/MM/uuuu" , Locale.UK );  // As a habit, specify the desired/expected locale, though in this case the locale is irrelevant.
LocalDate ld = LocalDate.parse( "23/01/2017" , fIn );
为输出定义另一个格式化程序

DateTimeFormatter fOut = DateTimeFormatter.ofPattern( "uuuu/MM/dd" , Locale.UK );
String output = ld.format( fOut );
2017/01/23

顺便说一下,考虑使用表示日期时间值的字符串的标准格式。


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)
该项目使用其他类扩展了java.time。该项目是将来可能添加到java.time的一个试验场。您可以在这里找到一些有用的类,如、、和


乔达时间 更新:项目现在开始,团队建议迁移到类。为了历史起见,这一部分保留在这里

为了好玩,下面是他的代码,适合使用这个库

/©2013 Basil Bourque。此源代码可由任何对此承担全部责任的人免费永久使用。
//导入org.joda.time.*;
//导入org.joda.time.format.*;
最终字符串OLD_FORMAT=“dd/MM/yyyy”;
最终字符串NEW_FORMAT=“yyyy/MM/dd”;
//2010年8月12日
字符串oldDateString=“12/08/2010”;
字符串newDateString;
DateTimeFormatter formatterOld=DateTimeFormat.forPattern(旧格式);
DateTimeFormatter formatterNew=DateTimeFormat.forPattern(新的_格式);
LocalDate LocalDate=formatterOld.parseLocalDate(oldDateString);
newDateString=formatterNew.print(localDate);
转储到控制台

System.out.println(“localDate:+localDate”);
System.out.println(“newDateString:+newDateString”);
当运行时

localDate:2010-08-12
newDateString:2010/08/12

更改日期格式的多种方法

private final String dateTimeFormatPattern = "yyyy/MM/dd";
private final Date now = new Date();  

final DateFormat format = new SimpleDateFormat(dateTimeFormatPattern);  
final String nowString = format.format(now);   

 final Instant instant = now.toInstant();  
 final DateTimeFormatter formatter =  
      DateTimeFormatter.ofPattern(  
         dateTimeFormatPattern).withZone(ZoneId.systemDefault());  
 final String formattedInstance = formatter.format(instant);  

  /* Java 8 needed*/
  LocalDate date = LocalDate.now();
  String text = date.format(formatter);
  LocalDate parsedDate = LocalDate.parse(text, formatter);

若要更改日期的格式,请同时查看以下两种格式

 String stringdate1 = "28/04/2010";  

 try {

     SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
     Date date1 = format1.parse()
     SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd");

     String stringdate2 = format2.format(date1);
    } catch (ParseException e) {
   e.printStackTrace();
}

这里的
stringdate2
的日期格式为
yyyy/MM/dd
,它包含
2010/04/28

这正是Christopher Parker为使用Java 8中的新1类而改编的:

final DateTimeFormatter OLD_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");
final DateTimeFormatter NEW_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd");

String oldString = "26/07/2017";
LocalDate date = LocalDate.parse(oldString, OLD_FORMATTER);
String newString = date.format(NEW_FORMATTER);

1好吧,不再是那么新了,Java 9应该很快发布。

我有一个字符串,格式是
dd/MM/yyyy
如何转换我可以将字符串传递到日期?现在您有两个问题;-)感谢您如此清楚地了解您的方法的局限性。仅供参考,麻烦的旧日期时间类,例如,和
java.text.SimpleTextFormat
现在被类取代。看,“自卫队”对我来说很奇怪,因为在法语中它的意思是“无家可归的人”。不过,谢谢你的解决方案:p
DateTimeFormatter fOut = DateTimeFormatter.ofPattern( "uuuu/MM/dd" , Locale.UK );
String output = ld.format( fOut );
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(format1.format(date));
private final String dateTimeFormatPattern = "yyyy/MM/dd";
private final Date now = new Date();  

final DateFormat format = new SimpleDateFormat(dateTimeFormatPattern);  
final String nowString = format.format(now);   

 final Instant instant = now.toInstant();  
 final DateTimeFormatter formatter =  
      DateTimeFormatter.ofPattern(  
         dateTimeFormatPattern).withZone(ZoneId.systemDefault());  
 final String formattedInstance = formatter.format(instant);  

  /* Java 8 needed*/
  LocalDate date = LocalDate.now();
  String text = date.format(formatter);
  LocalDate parsedDate = LocalDate.parse(text, formatter);
 String stringdate1 = "28/04/2010";  

 try {

     SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
     Date date1 = format1.parse()
     SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd");

     String stringdate2 = format2.format(date1);
    } catch (ParseException e) {
   e.printStackTrace();
}
final DateTimeFormatter OLD_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");
final DateTimeFormatter NEW_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd");

String oldString = "26/07/2017";
LocalDate date = LocalDate.parse(oldString, OLD_FORMATTER);
String newString = date.format(NEW_FORMATTER);