fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. import java.time.* ;
  8. import java.time.format.* ;
  9. import java.time.temporal.* ;
  10.  
  11. import java.io.BufferedReader;
  12. import java.io.IOException;
  13. import java.math.BigInteger;
  14. import java.nio.charset.StandardCharsets;
  15. import java.nio.file.Files;
  16. import java.nio.file.InvalidPathException;
  17. import java.nio.file.Path;
  18. import java.nio.file.Paths;
  19. import java.security.MessageDigest;
  20. import java.security.NoSuchAlgorithmException;
  21. import java.time.LocalDate;
  22. import java.time.Month;
  23. import java.util.List;
  24. import java.util.Objects;
  25. import java.util.function.Predicate;
  26.  
  27.  
  28. /* Name of the class has to be "Main" only if the class is public. */
  29. class Ideone
  30. {
  31. public static void main (String[] args) throws java.lang.Exception
  32. {
  33.  
  34. int daysToAddToOddDayNumber = -2_555 ;
  35. int daysToAddToEvenDayNumber = 2_101 ;
  36.  
  37. LocalDate localDate = LocalDate.of( 1970 , Month.JANUARY , 1 );
  38. boolean isEven = ( ( localDate.getDayOfMonth() & 1) == 0 ) ;
  39. LocalDate adjusted = isEven ? localDate.plusDays( daysToAddToEvenDayNumber ) : localDate.plusDays( daysToAddToOddDayNumber ) ;
  40.  
  41. System.out.println( "localDate.toString(): " + localDate ) ;
  42. System.out.println( "adjusted.toString(): " + adjusted ) ;
  43.  
  44. // Get fancy with hashing.
  45.  
  46. LocalDate localDate2 = LocalDate.of( 1970 , Month.JANUARY,1 );
  47. String input = localDate2.toString();
  48.  
  49. MessageDigest md = null;
  50. try
  51. {
  52. md = MessageDigest.getInstance( "MD5" );
  53. md.update( input.getBytes() );
  54. byte[] digest = md.digest();
  55. int days = new BigInteger( 1 , digest ).mod( new BigInteger("10000") ).intValue() ;
  56. LocalDate adjusted2 = localDate.minusDays( days ) ;
  57.  
  58. System.out.println( "localDate = " + localDate );
  59. System.out.println( "input = " + input );
  60. System.out.println( "days = " + days );
  61. System.out.println( "adjusted2 = " + adjusted2 );
  62. {
  63. e.printStackTrace();
  64. }
  65. }
  66. }
Success #stdin #stdout 0.16s 37592KB
stdin
Standard input is empty
stdout
localDate.toString(): 1970-01-01
adjusted.toString(): 1963-01-03
localDate = 1970-01-01
input = 1970-01-01
days = 8491
adjusted2 = 1946-10-03