【问题标题】:How to convert string date to Timestamp in java?如何在java中将字符串日期转换为时间戳?
【发布时间】:2011-02-14 02:29:06
【问题描述】:

我想在 java 中将字符串 Date 转换为 Timestamp。我编写的以下代码。我已声明 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)这种格式的时间戳日期。谁能帮帮我吗。谢谢。

【问题讨论】:

标签: java


【解决方案1】:

tl;博士

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

【讨论】:

    【解决方案2】:

    使用以下代码将字符串日期转换为 Epoc 时间戳。 注意: - 您的输入日期格式应与 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());
    

    【讨论】:

      【解决方案3】:

      您可以将字符串转换为时间戳:

      String inDate = "01-01-1990"
      DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
      Timestamp ts = new Timestamp(((java.util.Date)df.parse(inDate)).getTime());
      

      【讨论】:

        【解决方案4】:

        您只需将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。如何做到这一点..?
        • 挖掘旧帖子,但包含的链接已失效。对于将来看到此内容的任何人,这是一个工作版本:docs.oracle.com/javase/7/docs/api/java/text/…
        • 不太对。原始问题使用7 作为一年的值是一个严重的问题。
        【解决方案5】:

        你甚至可以试试这个。

           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 开始不推荐使用字符串参数构造日期
        【解决方案6】:

        使用大写 HH 来获取一天中的时间格式,而不是上午/下午时间

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-23
          • 1970-01-01
          • 2014-12-06
          • 2011-05-05
          • 1970-01-01
          • 2018-07-28
          • 2011-05-21
          • 1970-01-01
          相关资源
          最近更新 更多