Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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字符串到日期对象的格式为;yyyy mm dd HH:mm:ss“;_Java_String_Date_Simpledateformat - Fatal编程技术网

Java字符串到日期对象的格式为;yyyy mm dd HH:mm:ss“;

Java字符串到日期对象的格式为;yyyy mm dd HH:mm:ss“;,java,string,date,simpledateformat,Java,String,Date,Simpledateformat,我需要将包含日期的字符串转换为日期对象。字符串的格式为“yyyy-mm-dd HH:mm:ss.SSSSSS”,我希望在日期对象中使用相同的格式 例如,我有一个字符串“2012-07-10 14:58:00.000000”,我需要结果日期对象的格式相同 我尝试了以下方法,但结果并不像预期的那样 java.util.Date temp = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSSSSS").parse("2012-07-10 14:58:00.00

我需要将包含日期的字符串转换为日期对象。字符串的格式为“yyyy-mm-dd HH:mm:ss.SSSSSS”,我希望在日期对象中使用相同的格式

例如,我有一个字符串“2012-07-10 14:58:00.000000”,我需要结果日期对象的格式相同

我尝试了以下方法,但结果并不像预期的那样

java.util.Date temp = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSSSSS").parse("2012-07-10 14:58:00.000000");

DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
                Date thisDate = dateFormat.parse("2012-07-10 14:58:00.000000");
结果是“美国东部时间2012年1月10日星期二14:58:00”。请告诉我哪里出了问题

谢谢, 叶斯旺斯科塔

java.util.Date temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS").parse("2012-07-10 14:58:00.000000");
mm
是您想要的
mm

代码

public class Test {

    public static void main(String[] args) throws ParseException {
        java.util.Date temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
                .parse("2012-07-10 14:58:00.000000");
        System.out.println(temp);
    }
}
印刷品:

2012年7月10日星期二14:58:00美国东部时间

供日后参考:

 yyyy => 4 digit year
 MM   => 2 digit month (you must type MM in ALL CAPS)
 dd   => 2 digit "day of the month"

 HH   => 2-digit "hour in day" (0 to 23)
 mm   => 2-digit minute (you must type mm in lowercase)
 ss   => 2-digit seconds
 SSS  => milliseconds
因此,“yyyy-MM-dd HH:MM:ss”返回“2018-01-05 09:49:32”

但是“年月日hh:mm a”返回“2018年1月5日上午9:49”

上的所谓示例仅显示输出。他们不会告诉你使用什么格式

tl;博士 微秒不合适 您正试图将一个微秒(六位十进制数字)的值压缩为一个只能以毫秒为分辨率(三位十进制数字)的数据类型。这是不可能的

相反,请使用分辨率足够高的数据类型。time类使用纳秒分辨率(九位小数)

未分区的输入不适合分区类型 您正试图将缺少UTC或时区偏移量的值放入仅表示UTC值的数据类型(
Date
)。因此,您添加的信息(UTC偏移量)不是输入的目的

请改用适当的数据类型。具体来说

区分大小写 其他答案和注释正确地解释了格式化模式代码区分大小写。所以
MM
MM
有不同的效果

避免遗留类 与最早版本的Java捆绑在一起的麻烦的旧日期时间类现在是遗留的,被Java 8和更高版本中内置的Java.time类所取代

ISO 8601 您的输入字符串几乎符合ISO8601标准格式。用“<代码> t>代码>替换中间的空间以完全遵守。

在解析/生成字符串时,java.time类默认使用标准格式。因此,无需指定格式化模式

日期时间对象没有“格式” 我需要结果日期对象的格式相同

否,日期时间对象没有“格式”。不要将日期时间对象与字符串混为一谈。字符串是对象的输入和输出。对象维护其自己的日期时间信息的内部表示,其细节与我们调用程序员无关

java.time 您的输入缺少任何与UTC或麻烦me区域的偏移指示器。因此,我们将其解析为缺少这些概念的
LocalDateTime
对象

String input = "2012-07-10 14:58:00.000000".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;
生成字符串 要生成表示
LocalDateTime
值的字符串,请执行以下操作:

  • 调用
    toString
    以获取标准ISO 8601格式的字符串
  • 使用
    DateTimeFormatter
    以自定义格式或自动本地化格式生成字符串
搜索堆栈溢出以获取更多信息,因为这些主题已经讨论过很多次了

ZoneDateTime
LocalDateTime
不代表时间线上的确切点

要确定实际时刻,请指定时区。例如,印度加尔各答的中午比法国巴黎的中午早得多。没有时区的中午可能在26-27小时内的任何时间发生

ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;

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

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

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

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

从哪里获得java.time类

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

    • 对于早期的Android(您没有应用日期格式化程序。相反,您只是在解析日期。要获得此格式的输出

      yyyy-MM-dd HH:mm:ss.SSSSSS
      
      我们必须使用format()方法,以下是完整示例:- 以下是完整的示例:- 它将以这种格式记录日期
      yyyy-MM-dd HH:MM:ss.SSSSSS
      因此,我们将得到与此格式相同的输出
      yyyy-MM-dd HH:MM:ss.SSSSSS

       import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      //TODO OutPut should LIKE in this format yyyy-MM-dd HH:mm:ss.SSSSSS.
      public class TestDateExample {
      
      public static void main(String args[]) throws ParseException {
      
          SimpleDateFormat changeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
      
          java.util.Date temp = changeFormat.parse("2012-07-10 14:58:00.000000");
           Date thisDate = changeFormat.parse("2012-07-10 14:58:00.000000");  
          System.out.println(thisDate);
          System.out.println("----------------------------"); 
          System.out.println("After applying formating :");
          String strDateOutput = changeFormat.format(temp);
          System.out.println(strDateOutput);
      
      }
      
      }
      
      这对我来说很有用 SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);
      sdf格式(新日期)

      仅供参考,麻烦的
      SimpleDataFormat
      类已经被内置在Java8和Java9中的java.time类淘汰多年。明确地应避免使用与最早版本的Java捆绑在一起的旧日期时间类。仅供参考,诸如和
      Java.text.SimpleDateFormat
      等麻烦的旧日期时间类现在已被内置于Java 8和Java 9中的类所取代。请参阅。@Yeshwanth,原因是当我用java.util.Date temp=new SimpleDateFormat(“yyy-MM-dd HH:MM:ss.SSSSSS”)解析日期“2021-03-02 17:30:41.624862”时,您没有应用日期格式;我得到的输出为2021年3月2日星期二17:41:05 IST,这是错误的?正确的?大约提前11分钟。为什么
       import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      //TODO OutPut should LIKE in this format yyyy-MM-dd HH:mm:ss.SSSSSS.
      public class TestDateExample {
      
      public static void main(String args[]) throws ParseException {
      
          SimpleDateFormat changeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
      
          java.util.Date temp = changeFormat.parse("2012-07-10 14:58:00.000000");
           Date thisDate = changeFormat.parse("2012-07-10 14:58:00.000000");  
          System.out.println(thisDate);
          System.out.println("----------------------------"); 
          System.out.println("After applying formating :");
          String strDateOutput = changeFormat.format(temp);
          System.out.println(strDateOutput);
      
      }
      
      }