sumaniru
2017-06-19 05:06
采纳率: 100%
浏览 1.3k

java 将2001/9/9 之前的时间转成时间戳的问题

SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒",
Locale.CHINA);
Date date;
String times = null;
try {
date = sdr.parse(time);
long l = date.getTime();
String stf = String.valueOf(l);
times = stf.substring(0, 10);
} catch (ParseException e) {
e.printStackTrace();
}
return times;
以我生日为例,1994年12月06日00时00分00秒 转成时间戳 应该为0786643200,但是这个方法转成long格式的时候首位0被省略 再转为String的时候 就变成了7866432000了也就是2219/4/13 0:0:0 求大佬解答下 这个情况怎么解决 拜谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • lihongbiao0610 2017-06-19 05:59
    已采纳

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d = sdf.parse("1994-12-06");
    long l = d.getTime()/1000;//786643200
    System.out.println(l);
    时间戳的是786643200,不是0786643200

    已采纳该答案
    打赏 评论
  • 庄粟 2017-06-19 05:19

    首位不是1开头的吗。。。。

    打赏 评论
  • sumaniru 2017-06-19 05:42

    if (year > 2001) {
    size = 10;
    } else {
    if (year == 2001) {
    int month = Integer.parseInt(time.substring(5, 7));
    if (month > 9) {
    size = 10;
    }
    if (month < 9) {
    size = 9;
    }
    if (month == 9) {
    int day = Integer.parseInt(time.substring(8, 10));
    if (day > 9) {
    size = 10;
    }
    if (day <= 9) {
    size = 9;
    }
    }
    } else {
    size = 9;
    }
    }
    应该是这样 - -

    打赏 评论
  • sumaniru 2017-06-19 05:45

    我现在是 把传过来的字符串里年月日 截取出来 判断
    int size = 0;
    int year = Integer.parseInt(time.substring(0, 4));
    if (year > 2001) {
    size = 10;
    } else {
    int month = Integer.parseInt(time.substring(5, 7));
    if (month > 9) {
    size = 10;
    }
    if (month < 9) {
    size = 9;
    }
    if (month == 9) {
    int day = Integer.parseInt(time.substring(8, 10));
    if (day > 9) {
    size = 10;
    }
    if (day <= 9) {
    size = 9;
    }
    }
    }
    SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒",
    Locale.CHINA);
    Date date;
    String times = null;
    try {
    date = sdr.parse(time);
    long l = date.getTime();
    String stf = String.valueOf(l);
    times = stf.substring(0, size);
    if (size == 9) {
    times = "0" + times;
    }
    Log.d("--444444---", times);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return times;
    不知道有没比这更方便的方法,这个判断看着难受- -

    打赏 评论
  • FluxMode 2017-06-19 06:45

    图片说明
    和你说的有点不一样啊??

    打赏 评论
  • 徴心 2017-06-19 08:20
        String dateString="1992-07-12";
        SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
        Date date=sdf.parse(dateString);
        System.out.println(date.getTime());//710870400000
        Date date2=new Date(date.getTime());
        System.out.println(date2.toLocaleString());//1992-7-12 0:00:00
    
    打赏 评论
  • 清竹_ 2017-06-19 09:05

    你这个问题是 times = stf.substring(0, 10); 截取字符串造成的,然后秒和毫秒的单位换算也没有考虑

    打赏 评论

相关推荐 更多相似问题