我正在比较两个日期和时间,但它没有按预期工作。请帮助我。
import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Date date1=convertStringToDate("2015-05-03T17:11:00Z");
Date date2=convertStringToDate("2015-05-08T22:02:20Z");
System.out.println("Date2:"+date1.compareTo(date2));//output 1
Date date3=convertStringToDate("2015-05-08T21:15:29Z");
System.out.println("Date3:"+date1.compareTo(date3));//output -1
Date date4=convertStringToDate("2015-05-08T19:22:25Z");
System.out.println("Date4:"+date1.compareTo(date4));//output -1
Date date5=convertStringToDate("2015-05-08T16:46:31Z");
System.out.println("Date5:"+date1.compareTo(date5));//output 1
Date date6=convertStringToDate("2015-05-08T15:48:02Z");
System.out.println("Date6:"+date1.compareTo(date6));//output 1
}
static Date convertStringToDate(String input){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'HH:MM:SS'Z'");
Date date = null;
try {
date = formatter.parse(input);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
最佳答案
鉴于您的测试日期,您传递给 SimpleDateFormat
构造函数的格式 String
似乎具有小写和大写的 m
混合。来自 the docs ,大写的 M
表示 年中的月份 字符,而小写的 m
表示小时中的分钟。此外,您可能需要小写的 s
表示 seconds,而不是大写的 S
,后者表示 小数秒 字符。
您想要的格式似乎是"yyyy-MM-dd'T'HH:mm:ssZ"
。
关于java - Java 中的日期和时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136448/