从给定日期格式转换为秒

时间:2012-01-09 23:36:56

标签: java

我已经编写了从提供正确结果的秒数获取日期格式的代码。但是当我尝试从日期格式获取秒数时,我得到了错误的结果。这是代码

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));
    }
}

1 个答案:

答案 0 :(得分:1)

您忘记在TimeZone方法中使用的SimpleDateFormat上设置相同的displaySeconds()。添加以下行:

sourceFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

无关具体问题,使用Locale.getDefault()来处理英语中的日期格式也不完全正确。请改用Locale.ENGLISH并将其添加到SimpleDateFormat方法中使用的displaySeconds()的构造函数中。