如何在Java中将字符串日期转换为时间戳?

40

我想在Java中将字符串日期转换为时间戳。以下是我编写的代码。我声明的日期为date1:7-11-11 12:13:14。

SimpleDateFormat datetimeFormatter1 = new SimpleDateFormat(
                "yyyy-MM-dd hh:mm:ss");
Date lFromDate1 = datetimeFormatter1.parse(date1);
System.out.println("gpsdate :" + lFromDate1);
Timestamp fromTS1 = new Timestamp(lFromDate1.getTime());

我想将字符串日期7-11-11 12:13:14转换为时间戳。现在我的输出是0007-11-11 00:13:14.000000 +05:30:00,但我想要(7-11-11 12:13:14)这个格式的时间戳日期。请问有谁可以帮我。谢谢。


6个回答

26

您只需要更改java.text.SimpleDateFormat 构造函数中的字符串为 "MM-dd-yyyy HH:mm:ss"。

只需使用适当的字母来构建上述字符串以匹配您的输入日期。


我将SimpleDateFormat更改为“yyyy-MM-dd HH:mm:ss”。现在我得到的答案是2007-11-11 12:13:14.000000 +05:30:00,问题是我无法将此值添加到我的数据库表中。我想以2007-11-11 12:13:14的日期和时间格式显示它。怎么做? - lakshmi
挖掘一篇旧帖,但链接已失效。对于未来看到此帖的任何人,这里是一个可用的版本:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html - Mark Ormesher
不太对。原问题中使用“7”作为年份的值是一个严重的问题。 - Basil Bourque

18

简而言之

java.sql.Timestamp                  
.valueOf(                           // Class-method parses SQL-style formatted date-time strings.
    "2007-11-11 12:13:14"
)                                   // Returns a `Timestamp` object.
.toInstant()                        // Converts from terrible legacy classes to modern *java.time* class.

java.sql.Timestamp.valueOf解析SQL格式

如果您可以使用完整的四位数字表示年份,那么您的输入字符串2007-11-11 12:13:14将符合标准的SQL格式,假设该值是UTC时区。

java.sql.Timestamp类有一个valueOf方法可以直接解析这样的字符串。

String input = "2007-11-11 12:13:14" ;
java.sql.Timestamp ts = java.sql.Timestamp.valueOf( input ) ;

java.time

在Java 8及更高版本中,java.time框架使结果验证更加容易。 j.s.Timestamp类有一个讨厌的习惯,即通过其toString方法生成字符串表示时隐式应用JVM的当前默认时间戳。相比之下,默认情况下,java.time类使用标准ISO 8601格式。
System.out.println( "Output: " + ts.toInstant().toString() );

6
您可以将字符串转换为时间戳:
String inDate = "01-01-1990"
DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
Timestamp ts = new Timestamp(((java.util.Date)df.parse(inDate)).getTime());

4

你甚至可以尝试这个。

   String date="09/08/1980";    // take a string  date
    Timestamp ts=null;  //declare timestamp
    Date d=new Date(date); // Intialize date with the string date
    if(d!=null){  // simple null check
        ts=new java.sql.Timestamp(d.getTime()); // convert gettime from date and assign it to your timestamp.
    }

使用字符串参数构造日期已经自Java 8起被弃用。 - Akabelle

4

使用大写的 HH 来表示24小时制的小时数,而不是上午/下午制的小时数。


2
使用以下代码将字符串日期转换为Epoch时间戳。 注意:您的输入日期格式应与SimpleDateFormat匹配。
String inputDateInString= "8/15/2017 12:00:00 AM";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyy hh:mm:ss");

Date parsedDate = dateFormat.parse("inputDateInString");

Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());

System.out.println("Timestamp "+ timestamp.getTime());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接