如何在Big中将Bigint强制转换为Timestamp?

时间:2015-04-24 03:45:04

标签: java

下面的代码我尝试了没有工作..

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import java.sql.Timestamp;
    public class TimestampTest {
         public static void main(String[] args){
    long unixSeconds = 1429582984839L; // suffix L 
    java.util.Date date= new java.util.Date(unixSeconds*1000L);

     System.out.println(new Timestamp(date.getTime()));
  }}

预期产量:2015年4月21日上午03:15以这种格式.....但我得到了47271-09-06 09:40:39.0

4 个答案:

答案 0 :(得分:0)

要制作长型变量,您需要后缀“L' L'或者' l'在号码。否则它将是一个整数。

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimeZone;
    public void demoMethod() {
    long unixSeconds = 1333372339860L; // suffix L 
    Date date = new Date(unixSeconds*1000L); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
    sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
    String formattedDate = sdf.format(date);
    System.out.println(formattedDate);
    }

试试这段代码,它会起作用。如果有用或正确。请标记它有用或正确答案。 使用此代码更简单,更容易。

    import java.sql.TimeStamp;
    long unixSeconds = 1333372339860L; // suffix L 
    java.util.Date date= new java.util.Date(unixSeconds*1000L);
     System.out.println(new Timestamp(date.getTime()));

答案 1 :(得分:0)

1333372339860 / 60/60/24/365 = 42280

Plus 1970 = 44250

所以程序是正确的(我的计算忽略了闰年)。

你从哪里得到这个号码?

答案 2 :(得分:0)

您的电话号码1429582984839已经是毫秒级。没有必要乘以1000.这就是你需要知道的全部内容。

(对于想要在JavaScript中确认的人,请尝试:新日期(1429582984839) - >" 2015-04-21T02:23:04.839Z")

答案 3 :(得分:0)

  long unixSeconds = 1429582984839;
   Date date1 = new Date(unixSeconds); 
   SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a"); 
   sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
   String formattedDate = sdf.format(date1);
    System.out.println(formattedDate);