Java 如何从“更改日期和时间格式”;yyyy MM dd HH:MM:ss“;至;h:嗯,是吗;?

Java 如何从“更改日期和时间格式”;yyyy MM dd HH:MM:ss“;至;h:嗯,是吗;?,java,date,datetime,Java,Date,Datetime,我使用下面的代码将数据和时间格式化为时间。但它不起作用。有人能帮我解决这个问题吗 try { String actualDate = m.getDate();//get date as"28-aug-2015 6:46:32 pm" Date Date= new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse(actualDate); convertDate = new SimpleDateFo

我使用下面的代码将数据和时间格式化为时间。但它不起作用。有人能帮我解决这个问题吗

 try {
         String actualDate = m.getDate();//get date as"28-aug-2015 6:46:32 pm"
         Date Date= new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse(actualDate);
         convertDate = new SimpleDateFormat("h:mm a").format(Date);//6:46 am  
    }
    catch (ParseException e) {

         e.printStackTrace();
    }

转换格式后,我得到的“convertDate”值为“6.46 am”,但现在时间是“6:46 pm”。如何解决此问题。

您有一些错误,这就是您想要的:

 try {
         String actualDate = m.getDate();//get date as"28-aug-2015 6:46:32 pm"
         Date Date= new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse(actualDate);
         convertDate = new SimpleDateFormat("h:mm a").format(Date);//6:46 am  
    }
    catch (ParseException e) {

         e.printStackTrace();
    }
Date date= new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse(actualDate);
convertDate = new SimpleDateFormat("H:mm").format(date);
如果您使用am/pm,则:

Date date= new SimpleDateFormat("dd-MMM-yyyy h:mm:ss a").parse(actualDate);
convertDate = new SimpleDateFormat("h:mm a").format(date);
java.time 现代方法使用java.time类

我们使用一个生成器将格式化程序标记为不区分大小写,因为您的月名和AM/PM的拼写忽略了美国英语的文化规范

    String input = "28-aug-2015 6:46:32 pm";

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
    builder.parseCaseInsensitive();
    builder.appendPattern( "dd-MMM-uuuu h:m:s a" );
    DateTimeFormatter formatter = builder.toFormatter().withLocale( Locale.US) ;

    LocalDateTime ldt = LocalDateTime.parse( input , formatter );
看这个

输入:2015年8月28日下午6:46:32

ldt.toString():2015-08-28818:46:32

自动本地化 如果您的输入符合某些特定地区的文化规范,请使用
DateTimeFormatter.ofcalizeddatetime
而不是此生成器方法


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

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

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

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • Java9添加了一些次要功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(你能添加代码以供参考吗?当前时间是上午/下午?上午/下午是“a”,但你应该使用“h”而不是“h”。所有细节都在这里:我现在编辑了我的代码,时间显示为“6.58 am”,但应该显示为“6.58 pm”我的错误在哪里请解释。如果在输入和输出中使用am/pm,您的代码应该是:Date Date=new SimpleDateFormat(“dd-MMM-yyyy h:mm:ss a”)。parse(actualDate);String convertDate=new SimpleDateFormat(“h:mm a”)。format(Date);仅供参考,诸如和
      java.text.simpleDataFormat
      等非常麻烦的日期时间类现在被内置于Java8和更高版本中的类所取代。