पाश में जावा एक सेकंड से अधिक तेजी से यह एक ही रहना होगा यकीन है कि इसकी हमेशा अद्वितीय विशेष रूप से बहु में पिरोया समारोह बनाने के लिए है।
की तरह इस
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss:SSSSSSS");
कुछ संकेत somthing उपयोग आप अभ्यस्त ज्यादा डिबग मुसीबत में जाना तो
printDate("dd.MM.yyyy HH:mm:ss.SSS");//02.05.2010 21:45:58.073
printDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//02.05.2010 21:45:58.000073
printDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//02.05.2010 21:45:58.073000
printDate("dd.MM.yyyy HH:mm:ss.'000000'");//02.05.2010 21:45:58.000000
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS");//good
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//good
tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//bad
tryToParseDate("dd.MM.yyyy HH:mm:ss.'000000'");//good
संदर्भ:
उत्तर @slartidan
String-Date conversion with nanoseconds
सिफारिश के रूप में जब मैं इस स्थिति का सामना करना पड़ा:
1)तो S3 एडब्ल्यूएस से बोल रहा हूँ
फ़ाइलों यह फ़ाइल के शुरू में अद्वितीय के रूप में नामित किया जाना चाहिए नाम यह हैशिंग और बहुत तेजी से खोज करेगा। अनुकूलित करने के लिए एडब्ल्यूएस एस 3 सर्वोत्तम प्रथाओं के रूप में।
public static String genarateFileName(String name) {
StringBuilder sb = new StringBuilder(name);
sb.insert(0, IdUtil.getUniqueUuid());in short to increase performance of S3 put and get etc..)
if (sb.lastIndexOf(".") != -1) {
sb.insert(sb.lastIndexOf("."), "_" + System.nanoTime());
} else {
sb.append("_").append(System.nanoTime());
}
return sb.toString();
}
2)यादृच्छिक नैनो
public static String getUniqueUuid() {
int rand = (int) (Math.random() * 100);
return Integer.toHexString(rand) + Long.toHexString(java.lang.System.nanoTime());
}
3 उत्पन्न करने के लिए) मैं यादृच्छिक स्ट्रिंग की जांच के साथ दोनों यादृच्छिक नैनो का उपयोग नीचे कुछ लंबाई के यादृच्छिक स्ट्रिंग उत्पन्न कर
/**
* Generate a random uuid of the specified length. Example: uuid(15) returns
* "VcydxgltxrVZSTV"
*
* @param len the desired number of characters
* @return
*/
public static String uuid(int len) {
return uuid(len, CHARS.length);
}
/**
* Generate a random uuid of the specified length, and radix. Examples: <ul>
* <li>uuid(8, 2) returns "01001010" (8 character ID, base=2) <li>uuid(8,
* 10) returns "47473046" (8 character ID, base=10) <li>uuid(8, 16) returns
* "098F4D35" (8 character ID, base=16) </ul>
*
* @param len the desired number of characters
* @param radix the number of allowable values for each character (must be
* <= 62)
* @return
*/
public static String uuid(int len, int radix) {
if (radix > CHARS.length) {
throw new IllegalArgumentException();
}
char[] uuid = new char[len];
// Compact form
for (int i = 0; i < len; i++) {
uuid[i] = CHARS[(int) (Math.random() * radix)];
}
return new String(uuid);
}
जावा 8 दिनांक और समय के लिए नए एपीआई की शुरुआत की। आप यहां एक त्वरित रूप से देख सकते हैं: http://www.baeldung.com/java-8-date-time-intro – Touniouk
आपको मिली सेकेंड का उपयोग करना होगा, और यदि आप थ्रेड का उपयोग कर रहे हैं तो नैनोसेकंद – shareef
का उपयोग करें, आपके पास सेकंड की सटीकता है। क्या आप वाकई अंतर के मिलीसेकंड के साथ कोड को दूसरे सेकेंड में निष्पादित नहीं किया गया है? मैं फ़ाइल नाम के एक अद्वितीय भाग में System.currentTimeMillis() का उपयोग करने की सिफारिश करता हूं। –