Java字符串到日期对象的格式为;yyyy mm dd HH:mm:ss“;
我需要将包含日期的字符串转换为日期对象。字符串的格式为“yyyy-mm-dd HH:mm:ss.SSSSSS”,我希望在日期对象中使用相同的格式 例如,我有一个字符串“2012-07-10 14:58:00.000000”,我需要结果日期对象的格式相同 我尝试了以下方法,但结果并不像预期的那样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
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
值的字符串,请执行以下操作:
- 调用
以获取标准ISO 8601格式的字符串toString
- 使用
以自定义格式或自动本地化格式生成字符串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(您没有应用日期格式化程序。相反,您只是在解析日期。要获得此格式的输出
我们必须使用format()方法,以下是完整示例:- 以下是完整的示例:- 它将以这种格式记录日期yyyy-MM-dd HH:mm:ss.SSSSSS
因此,我们将得到与此格式相同的输出yyyy-MM-dd HH:MM:ss.SSSSSS
yyyy-MM-dd HH:MM:ss.SSSSSS
这对我来说很有用 SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);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); } }
sdf格式(新日期) 仅供参考,麻烦的
类已经被内置在Java8和Java9中的java.time类淘汰多年。明确地应避免使用与最早版本的Java捆绑在一起的旧日期时间类。仅供参考,诸如和SimpleDataFormat
等麻烦的旧日期时间类现在已被内置于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分钟。为什么Java.text.SimpleDateFormat
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); } }