gpt4 book ai didi

java - 如何在java中将千分之一或更低的字符串格式化为日期?

转载 作者:行者123 更新时间:2023-12-01 13:49:07 25 4
gpt4 key购买 nike

我有一个以下字符串07/21-04:00:14.766098,我想将其格式化为日期(或使用Joda-Time的日期时间或我可以轻松比较的任何内容等)。 )。如果我像这样使用 SimpleDateFormat

SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd-HH:mm:ss.S" );
System.out.println(formatter.parse("07/21-04:00:14.766098"));

我明白了Tue Jul 21 04:13:00 CET 1970 这是不正确的,因为它假设秒后的数字 (766098) 是毫秒,因此增加了 13 分钟。所以我的问题是,如何正确存储该日期,以便我可以比较相隔千分之一的日期?

最佳答案

您可以使用SimpleDateFormat来解析您的日期:

SimpleDateFormat formatter = new SimpleDateFormat( "MM/dd-HH:mm:ss.S" );
Calendar c = Calendar.getInstance();
c.setTime( formatter.parse( "07/21-04:00:14.766098" ) );
c.set( Calendar.YEAR, 2012 );
System.out.println( new SimpleDateFormat( "dd/MM/yyyy HH:mm:ss.S" ).format( c.getTime() ) );

线路

c.set( Calendar.YEAR, 2012 );

设置正确的年份,因为 formatter.parse( "07/21-04:00:14.766098") 返回 1970 年

更新:

Timestamp允许您添加纳秒。要获取 Timestamp 对象中的日期,您可以将日期字符串拆分为日期和时间部分和小数部分。将日期和时间部分解析为时间戳,然后添加纳秒。

有示例代码:

    String dateString = "07/21-04:00:14.766098";

String[] parts = dateString.split( "\\." );

Calendar c = Calendar.getInstance();
c.setTime( ( new SimpleDateFormat( "M/d-H:m:s" ) ).parse( parts[0] ) );
c.set( Calendar.YEAR, 2014 );

java.sql.Timestamp timestamp = new java.sql.Timestamp( c.getTimeInMillis() );

if( parts.length == 2 ) {
// Your fractional part must be 9 numbers length with tailing zeros
// I am not sure how to pad string with zeros at right
int nanos = Integer.parseInt( String.format( "%-9s", parts[1] ).replace( ' ', '0' ) );
timestamp.setNanos( nanos );
}

System.out.println( "Date string: " + dateString );
System.out.println( "Timestamp : " + timestamp.toString() );

Timestamp 的优点是它实现了同情心和其他有用的方法。

关于java - 如何在java中将千分之一或更低的字符串格式化为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com