2015-07-01 32 views
0

我的輸入字符串是「mmyy」日期格式,我希望能夠用具有相同格式「mmyy」的隨機日期替換該字符串,但年份必須在2010年之前。我該怎麼辦?任何建議?我必須設置SimpleDateFormat嗎?在某個時間之前生成日期?

例如:輸入「0914」,我的輸出應該是隨機的,並返回像「0802」,其中「02」的字符串是2002年這是在2010年前

感謝

+0

使用Java 8的時間API或JodaTime – MadProgrammer

+2

您可以生成兩個隨機int,第一個<10(年)和第二個<= 12(月),然後連接到一個字符串填充0,如果有必要獲得一個類似於XXYY的字符串,然後將其格式化以獲取日期... –

+0

可能的[生成隨機出生日期]的副本(http://stackoverflow.com/questions/3985392/generate-random-date-of-irth ) –

回答

2

試試下面的代碼片段爲Java 8版本:

// Generate random date 
Random random = new Random(); 
LocalDate maxDate = LocalDate.of(2010, 1, 1); 
long randomDay = random.nextInt((int) maxDate.toEpochDay()); 
LocalDate randomDate = LocalDate.ofEpochDay(randomDay); 

// Convert to String using 'MMyy' pattern 
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMyy"); 
String result = dtf.format(randomDate.atStartOfDay()); 

System.out.println(result); 

注1: 這應該產生1Jan1970和1Jan2010(不含)之間的隨機日期 - 這是你想要的嗎?

注2: 日期格式是固定的,並且事先已知道它的說明方式。因此,有沒有需要輸入字符串爲「替換」,只需使用result(除非我誤會?)

注3:my answermore general (and possibly duplicate) question。您還會在那裏找到Java 8之前的想法。

+0

我很好奇(但作者沒有提到它),如果她只使用字符串,她是否限制在2000年以後的日期以避免歧義?...... –

+1

@JensHoffman你是一個很好的答案。但最好將原答案添加到答案中,而不是後面的副本。最初的[StackOverflow背後的想法](http://www.joelonsoftware.com/items/2008/09/15.html)是創建一個具有良好答案的維基百科風格的好問題集合,而不是分散的討論線索。像這個問題一樣的重複應該留下乾涸和萎縮,或者被刪除/收回。 –

+0

@BasilBourque感謝您的評論,理解。我在[原始問題](http://stackoverflow.com/questions/3985392/generate-random-date-of-birth)上也留下了類似的答案,因此如果此問題得到解決,信息將保留。 –