java将字符串格式的日期转换为时间戳

java将字符串格式的日期转换为时间戳,java,Java,我正在尝试将以下格式的日期:2013年3月1日星期五下午4:30转换为 此格式的时间戳值:yyyy-mm-dd hh:mm:ss 例如: 字符串str='Fri Mar 1,2013 4:30 PM'应输出:2013-01-14 23:59:59 以下是我尝试过的: String string = "January 2, 2010"; Date date = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(string);

我正在尝试将以下格式的日期:2013年3月1日星期五下午4:30转换为 此格式的时间戳值:yyyy-mm-dd hh:mm:ss

例如:


字符串str='Fri Mar 1,2013 4:30 PM'应输出:2013-01-14 23:59:59

以下是我尝试过的:

String string = "January 2, 2010";
Date date = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(string); 
System.out.println(date);
此输出:2010年1月2日星期六00:00:00 GMT+05:30


提前感谢

假设您将日期和时间作为日期。所以,您需要格式化方法。探索API中的更多模式

public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
        Date currDate = new Date();
        System.out.println("Current Date: " + currDate);
        System.out.println("Formatted Date: " + sdf.format(currDate));
}
输出:

Current Date: Wed Feb 06 13:15:19 IST 2013
Formatted Date: 2013-02-06 13:15:750
Parsed Date: Fri Mar 01 04:30:00 IST 2013
Formatted Date: 2013-03-01 04:30:00 AM
Date Object: Fri Mar 01 16:30:00 EST 2013 Formatted Date: 2013-03-01 16:30 PM 如果您有字符串格式的日期,您需要先用日期解析它,然后再格式化它

例如:

   String str = "Fri Mar 1, 2013 4:30 PM";
   SimpleDateFormat sdf2 = new SimpleDateFormat("E MMM dd, yyyy HH:mm a"); 
   Date parsedDate = sdf2.parse(str);
   System.out.println("Parsed Date: " + parsedDate);

   sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS a");
   System.out.println("Formatted Date: " + sdf2.format(parsedDate));
输出:

Current Date: Wed Feb 06 13:15:19 IST 2013
Formatted Date: 2013-02-06 13:15:750
Parsed Date: Fri Mar 01 04:30:00 IST 2013
Formatted Date: 2013-03-01 04:30:00 AM
Date Object: Fri Mar 01 16:30:00 EST 2013 Formatted Date: 2013-03-01 16:30 PM 输出:

Current Date: Wed Feb 06 13:15:19 IST 2013
Formatted Date: 2013-02-06 13:15:750
Parsed Date: Fri Mar 01 04:30:00 IST 2013
Formatted Date: 2013-03-01 04:30:00 AM
Date Object: Fri Mar 01 16:30:00 EST 2013 Formatted Date: 2013-03-01 16:30 PM
之前的两个答案在2013年都是很好的答案。时间在前进,Java中时间信息的处理也在前进。如果您可以使用Java 8,请使用新Java.time包中的date和time类,该包也在Three Ten Backport中后端口到Java 6和7:

    String str = "Fri Mar 1, 2013 4:30 PM";
    LocalDateTime ldt = LocalDateTime.parse(str, 
            DateTimeFormatter.ofPattern("EEE MMM d, uuuu h:mm a", Locale.ENGLISH));
这将生成一个没有时区的时间2013-03-01T16:30。要将其格式化为所需的输出格式:

    System.out.println(ldt.format(DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss")));
这张照片是:

2013-03-01 16:30:00
如果您想要UTC时间戳,您可以从计算机的时区进行如下转换:

ldt.atZone(ZoneId.systemDefault()).toInstant()
由于我位于中欧时区,在我的计算机上,它会产生一个时间点2013-03-01T15:30:00Z,其中Z表示UTC;即时对象始终以UTC打印


链接:

你到底想转换成什么?你的具体问题是什么?String=2010年1月2日;日期日期=新SimpleDataFormatMMM d,yyyy,Locale.ENGLISH.parsestring;系统输出打印日期;输出::Sat Jan 02 00:00:00 GMT+05:30 2010String str='Fri Mar 1,2013 4:30 PM'我有这样的字符串我需要像2013-01-14 23:59:59这样的输出如果你将这些信息添加到问题中,它将不会被关闭,如果你想将字符串格式化为格式化日期,你将得到answerUse解析方法。请参阅我的字符串str='Fri Mar 1,2013 4:30 PM'类似于此,但上面的代码没有转换一些类似于java.lang.IllegalArgumentException的错误:无法将给定对象格式化为日期