我已经编写了从提供正确结果的秒数获取日期格式的代码。但是当我尝试从日期格式获取秒数时,我得到了错误的结果。这是代码
public class DateTimeFind
{
public static void main(String[] args){
String seconds = "1325376000";
DateTimeFind dtf = new DateTimeFind();
// Displaying correct date from the given seconds
dtf.displayDate(seconds);
String date = "Sunday, January 1, 2012 12:00,AM";
// Displaying wrong value of seconds from the given date.
dtf.displaySeconds(date);
}
private void displayDate(String seconds){
long startEndSec = Long.parseLong(seconds);
SimpleDateFormat formatter = new SimpleDateFormat(
"EEEE, MMMM d, yyyy h:mm,a", Locale.getDefault());
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateString = formatter.format(new Date(startEndSec * 1000L));
System.out.println(dateString);
}
private void displaySeconds(String startEndDateTime){
SimpleDateFormat sourceFormat = new SimpleDateFormat(
"EEEE, MMMM dd, yyyy h:mm,a");
long c = 0;
long c1 = 0;
try
{
Date t = (Date) sourceFormat.parse(startEndDateTime);
c = t.getTime() / 1000;
}
catch(ParseException e)
{
e.printStackTrace();
}
System.out.println(Long.toString(c));
}
}
答案 0 :(得分:1)
您忘记在TimeZone
方法中使用的SimpleDateFormat
上设置相同的displaySeconds()
。添加以下行:
sourceFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
无关具体问题,使用Locale.getDefault()
来处理英语中的日期格式也不完全正确。请改用Locale.ENGLISH
并将其添加到SimpleDateFormat
方法中使用的displaySeconds()
的构造函数中。