我的below函数没有将日期转换为定义的格式。
val oldFormat= new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS")
val newFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS",Locale.ENGLISH)
newFormat.format(oldFormat.parse(s).getTime))
输入日期的格式为yyyy-MM-dd-HH.mm.ss.SSSSSS,需要将其转换为yyyy-MM-dd hh:mm:ss.SSSSSS。
我的输入是2019-10-08-03.57.14.694695,但上述代码输出到2019-10-08 04:15:04.000695 我在这里做错了什么
答案 0 :(得分:1)
使用Java 8中引入的更新的DatetimeFormatter
和LocalDateTime
API:
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*
fun main(args: Array<String>){
val oldFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
val localDateTime = LocalDateTime.parse("2019-10-08-03.57.14.694695", oldFormatter)
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS", Locale.ENGLISH)
val output = formatter.format(localDateTime)
println(output)
}
我创建了一个自定义格式化程序,并获取了date对象,然后使用其他自定义格式化程序重新格式化了该对象。
答案 1 :(得分:0)
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html。 S-毫秒,表示最大值为999。如果您将S写入3倍以上,则只会加上前导零。
但是您可以使用java.time,其中S是第二部分:
final String input = "2019-10-08-03.57.14.694695";
final TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS").parse(input);
final DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss.SSSSSS", Locale.ENGLISH);
final String result = newFormatter.format(ta);
答案 2 :(得分:0)
使用Java 8
String InputFormat = "yyyy-MM-dd-HH.mm.ss.SSSSSS";
String outputFormat = "yyyy-MM-dd HH:mm:ss.SSSSSS";
String input = "2019-10-08-03.57.14.694695";
LocalDateTime ldt = LocalDateTime.parse(input, DateTimeFormatter.ofPattern(InputFormat));
String result = DateTimeFormatter.ofPattern(outputFormat).format(ldt);
System.out.println(result);
如果您仍然想使用SimpleDateFormat,请使用@tutejszy答案通过以下方法解决问题
String input = "2019-10-08-03.57.14.694695";
String microseconds = input.substring(input.lastIndexOf('.')+1);
int ms= Integer.parseInt(microseconds);
input= input.substring(0,input.lastIndexOf('.')+1) + "000000";
SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
String result = new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss.").format(in.parse(input))
+ String.format("%06d", ms%1000000);
System.out.println(result);