New Date()对象给出相同的值

pul*_*ion 5 java date

我有一些代码利用Date对象作为文件的名称,以便每次都有不同的文件名,但奇怪的是新的Date对象toString()为每个循环迭代发出相同的内容.我的意思是,以下内容:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String fileName = sdf.format((d = new Date())) + ".jpg";

Log.d("Date", d.toString());
Run Code Online (Sandbox Code Playgroud)

在循环中执行.

旁注:由于这与Java API有关,我没有将问题标记为Android的问题,但执行此代码的操作系统是Android.

据我所知,new Date()使用System.currentTimeMilis()的初始化值,可能是什么原因,这种不寻常的行为?

Ser*_*gej 5

您将时间格式化为yyyyMMdd_HHmmss,但循环运行只需几毫秒,因此请使用yyyyMMdd_HHmmssSSS更精确的时间.

正如Jon Skeet在他的评论中提到的,循环的运行甚至可能不到一毫秒(取决于你执行的任务),所以你也可能遇到这个问题的问题!

  • 当然,循环很可能在一毫秒内运行多次.我认为在答案中值得一提. (2认同)