java 中执行两次时间戳 为什么得到的一样,怎么改有差别,求大神

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String date = sf.format(new Date());
System.out.println(date);
SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String date2 = sf1.format(new Date());
System.out.println(date2);
date1和date2为什么一样 。。。。。怎么才能不一样

你好!

        因为你的format到秒级别的,而你的计算机运行速度很快,运行这2次取时间之间的时间远远小于1秒,所有,你看到的结果就是一样的

你尝试着改成毫秒级别"yyyy-MM-dd-HH-mm-ss.SSS"试试

如果还不行的话,说明你的计算机运行速度还是太快,2次之间的时间小于1毫秒,

那么你可以让线程等待1毫秒就能看到差别了,希望能帮到你

    public static void main(String[] args) {

        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss.SSS");

        String date = sf.format(new Date());

        System.out.println(date);

        try {

            Thread.sleep(1);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss.SSS");

        String date2 = sf1.format(new Date());

        System.out.println(date2);

追问

谢谢了哈 蛋疼啊 由于我要拿时间戳拼接个id,得到新的东西 现在时间戳一样 没法区分

追答

不客气,如果觉得帮到你了,请采纳我的答案就是对我最大的感谢了
不过你可以用UUID去生成ID,这个肯定是唯一的
String uuid = UUID.randomUUID().toString();

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-26
yyyy-MM-dd-HH-mm-ss-SSS 最后的SSS是表示毫秒
一般是不会重复的,但由于你两个时间戳之间的代码非常少,可能会相同,即:在一毫秒内已经执行了

第2个回答  2014-07-26
你的两个date1 date2写的本来就是一样的啊结果怎么会不一样呢,不太清楚你要干什么,是要其他格式啊还是什么,如果要其他格式的话就调整这里("yyyy-MM-dd-HH-mm-ss");
还有这种用法

Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.
cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.
//通过格式化输出日期
SimpleDateFormat f3= new java.text.SimpleDateFormat("yyyy-MM-dd");
System.out.println("Today is:"+f3.format(Calendar.getInstance().getTime()));
System.out.println("yesterday is:"+f3.format(cal.getTime()));

日期格式化有好几种方法的你可以去百度下日期格式化的用法,你要输出什么格式的你就去照例子写就行了,很简单的~
第3个回答  2014-07-26
long date = System.currentTimeMillis();
第4个回答  2014-07-26
加上毫秒显示追问

sss也是一样的结果

追答

System,nanoTime();
可以获取纳秒时间

System,nanoTime();
可以获取纳秒时间