Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java System.currentTimeMillis如何在短时间内返回长度不同的long?_Java_Timestamp_Digit_Current Time - Fatal编程技术网

Java System.currentTimeMillis如何在短时间内返回长度不同的long?

Java System.currentTimeMillis如何在短时间内返回长度不同的long?,java,timestamp,digit,current-time,Java,Timestamp,Digit,Current Time,我正在使用创建临时目录 Files.createTempDirectory(String.format("project-it-screenshots-%d", System.currentTimeMillis())).toFile(); 我假设由System.currentTimeMillis()返回的longs都具有相同的长度,因为具有不同长度的两个返回值必须来自不同的世纪。在每天多次调用该方法之后,我最终得到了 project-it-screenshots-1534338

我正在使用创建临时目录

Files.createTempDirectory(String.format("project-it-screenshots-%d",
        System.currentTimeMillis())).toFile();
我假设由
System.currentTimeMillis()
返回的
long
s都具有相同的长度,因为具有不同长度的两个返回值必须来自不同的世纪。在每天多次调用该方法之后,我最终得到了

project-it-screenshots-15343380422205011345585140911467
project-it-screenshots-15343381444485756307954062111474
project-it-screenshots-15343386111604255833362898885857
project-it-screenshots-15343388402055473274775132302475
project-it-screenshots-1534338974370463603854456850155
project-it-screenshots-15343390449093279576023746896269
project-it-screenshots-15343398036346426501075034038757
project-it-screenshots-15343399888498609875231360701639
project-it-screenshots-15343401211515574289310135012571
project-it-screenshots-15343405563586337945661543042110
project-it-screenshots-15343419027757787065954653813302
project-it-screenshots-15343425353682119990056938907868
project-it-screenshots-15343429571018010152043055630277
project-it-screenshots-15343431608662744493593200651167
project-it-screenshots-15343436122094379676346949668973
project-it-screenshots-15343442103124076542522856351947
project-it-screenshots-15343539846818150078805796257638
project-it-screenshots-15343555678106536264262565060437
project-it-screenshots-15343809068582300780873443756155
project-it-screenshots-15344378068483088975615680511653
project-it-screenshots-15344421866441533761733546877922
其中
153433897437046360385445685105155
比其他数字短一位。这似乎与前导的
0
s的剥离无关,因为没有前导的
0
s,与尾随的
0
s无关,因为一些长度较大的数字有前导的
0,而另一些则没有

我正在搜索解释,而不是解决方法(我将使用格式化日期,可以对其进行排序,或者使用
String.format
对数字进行填充,只会稍微更改时间戳)


我在Ubuntu18.04上使用OpenJDK 8。

该方法
系统。currentTimeMillis()
返回一个
长的
,它最多只能是19位。但您的数字字符串长度为31-32个字符

对的调用正在向文件名添加其他字符

在默认临时文件目录中创建一个新目录,使用给定的前缀生成其名称

(粗体强调)

对于dir参数是临时文件目录的情况,此方法完全按照
createTempDirectory(Path,String,FileAttribute[])
方法指定的方式工作

该方法规定:

有关如何构造目录名的详细信息取决于实现,因此未指定

如果希望名称是可预测的,则不能使用
文件中的任何“createTemp”方法。如果您同意后缀不在您的控制范围内,那么您可以选择如何创建前缀。但是使用
System.currentTimeMillis()
并不是路径名比其他路径名短的原因。它必须是未指定的实现

在Windows10上,我得到了类似的东西

C:\Users\rgettman\AppData\Local\Temp\project-it-screenshots-15344437949188484678689730417470

方法
System.currentTimeMillis()
返回一个
long
,最大长度只能为19位。但您的数字字符串长度为31-32个字符

对的调用正在向文件名添加其他字符

在默认临时文件目录中创建一个新目录,使用给定的前缀生成其名称

(粗体强调)

对于dir参数是临时文件目录的情况,此方法完全按照
createTempDirectory(Path,String,FileAttribute[])
方法指定的方式工作

该方法规定:

有关如何构造目录名的详细信息取决于实现,因此未指定

如果希望名称是可预测的,则不能使用
文件中的任何“createTemp”方法。如果您同意后缀不在您的控制范围内,那么您可以选择如何创建前缀。但是使用
System.currentTimeMillis()
并不是路径名比其他路径名短的原因。它必须是未指定的实现

在Windows10上,我得到了类似的东西

C:\Users\rgettman\AppData\Local\Temp\project-it-screenshots-15344437949188484678689730417470

createTempDirectory
添加了一组“唯一”后缀字符,这取决于实现,未指定。在所有示例中,请参见
currentTimeMillis
的结果已进入前13位(不多也不少),例如
1534338042220
1534338974370
。所有毫秒值都形成了一个良好的递增序列。
createTempDirectory
添加了一组“唯一”后缀字符,这取决于实现,未指定。在所有示例中,请参见
currentTimeMillis
的结果已进入前13位(不多也不少),例如
1534338042220
1534338974370
。所有毫秒值都形成了一个很好的递增序列。