Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为日期时间_Java_Date - Fatal编程技术网

Java 将字符串转换为日期时间

Java 将字符串转换为日期时间,java,date,Java,Date,我必须这样做 Thu Oct 03 07:47:22 2013 Mon Jul 05 08:47:22 2013 我想比较这些日期,我使用的是SimpleDateFormat(“EEE-MMM-dd-HH:mm:ss-yyy”)但它给了我一个异常:java.text.ParseException:不可解析的日期: 请帮我解决这个问题 您今年缺少了一个y: EEE MMM dd HH:mm:ss yyyy 但是您应该使用一个更强大的库,org.jodatime import org.joda.

我必须这样做

Thu Oct 03 07:47:22 2013
Mon Jul 05 08:47:22 2013
我想比较这些日期,我使用的是
SimpleDateFormat(“EEE-MMM-dd-HH:mm:ss-yyy”)
但它给了我一个异常:
java.text.ParseException:不可解析的日期:


请帮我解决这个问题

您今年缺少了一个
y

EEE MMM dd HH:mm:ss yyyy
但是您应该使用一个更强大的库,
org.jodatime

import org.joda.time.format.DateTimeFormat;
import org.joda.time.DateTime;

DateTimeFormat format = DateTimeFormat.forPattern("EEE MMM dd HH::mm:ss yyyy");
DateTime time = format.parseDateTime("Thu Oct 03 07:47:22 2013");

格式中缺少一个
y
。这一年需要4个
y
(虽然它可以与
yyy
配合使用,但最好使用
yyy
,因为它会使您的格式更易于其他人阅读)。要获取
DateTime
对象,可以使用
Date
对象,该对象通过解析字符串来构造
DateTime

import org.joda.time.format.DateTimeFormat;
import org.joda.time.DateTime;

DateTimeFormat format = DateTimeFormat.forPattern("EEE MMM dd HH::mm:ss yyyy");
DateTime time = format.parseDateTime("Thu Oct 03 07:47:22 2013");
试着这样做:-

String str = "Thu Oct 03 07:47:22 2013";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); // You missed a y here.
try {
    Date d = sdf.parse(str);
    DateTime dt = new DateTime(d.getTime()); // Your DateTime Object.
} catch (ParseException e) {
    // Parse Exception
}

这是日期比较的完整示例

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class dateCompare 
{
     public static void main( String[] args ) 
    {
        try{

            SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyy");
            Date date1 = sdf.parse("Thu Oct 03 07:47:22 2013");
            Date date2 = sdf.parse("Mon Jul 05 08:47:22 2013");

            System.out.println(sdf.format(date1));
            System.out.println(sdf.format(date2));

            Calendar cal1 = Calendar.getInstance();
            Calendar cal2 = Calendar.getInstance();
            cal1.setTime(date1);
            cal2.setTime(date2);

            if(cal1.after(cal2)){
                System.out.println("Date1 is after Date2");
            }

            if(cal1.before(cal2)){
                System.out.println("Date1 is before Date2");
            }

            if(cal1.equals(cal2)){
                System.out.println("Date1 is equal Date2");
            }

        }catch(ParseException ex){
            ex.printStackTrace();
        }
    }
}
输出

Thu Oct 03 07:47:22 2013
Fri Jul 05 08:47:22 2013
Date1 is after Date2
这是带有代码和输出的屏幕截图 试试这个方法

public static Date formatStringToDate(String strDate) throws ModuleException {
    Date dtReturn = null;
    if (strDate != null && !strDate.equals("")) {
        int date = Integer.parseInt(strDate.substring(0, 2));
        int month = Integer.parseInt(strDate.substring(3, 5));
        int year = Integer.parseInt(strDate.substring(6, 10));

        Calendar validDate = new GregorianCalendar(year, month - 1, date);
        dtReturn = new Date(validDate.getTime().getTime());
    }
    return dtReturn;
}

给我们代码…你是如何比较日期的?
EEE MMM dd HH:mm:ss yyyy
1个额外的y,这就是问题所在吗?这种模式很好。你能给我们看一下代码吗?你试过yyy了吗?@RohitJain,Renjith-嗯,它也可以和
yyy
一起工作,但是
yyy
肯定会提高可读性。@R.J。。。当然,它提高了可读性。但是yyy没有给出任何例外。因此,您的答案必须是注释而不是答案。它回答了将字符串转换为日期时间的问题标题。为什么它应该是一个评论?!你试过yyy吗?@user2842269只需复制整个代码并运行它。我刚刚在我的计算机上进行了测试,并将答案与输出一起发布。我认为我在回答中使用的格式可能与您尝试的格式不同。请使用您在问题中发布的相同格式。如果您有不同的格式,请告诉我,我将更改我的答案accordingly@user2842269这很奇怪,因为它在我这边效果很好。好吧,我会包括截图also@user2842269见ScreenShot当我在写MMM时会给出一个例外,但是当MM nad例如05时,它是OK@user2842269附上显示代码和输出(或异常)的屏幕截图