# # # locale ja JP JP new instance jcal new gregorian gcal # Use GMT+09:00 for max day of year test which depends on time zone # offsets. timezone GMT+09:00 new instance tokyocal test Make sure that the maximum year value doesn't depent on era use jcal # Note: the max year value is as of Reiwa assign 292276976 $max clear all set date Reiwa 1 May 1 get millis check max year $max assign $max $maxyear clear all set date Heisei 20 May 5 get millis check max year $maxyear clear all set date Showa 35 May 5 get millis check max year $maxyear clear all set date BeforeMeiji 1 Jun 1 get millis check max year $max test Max of ERA use jcal # Assumption: Reiwa is the current era check maximum era Reiwa check leastmax era Reiwa test Actual max MONTH use jcal clear all set date BeforeMeiji 1867 Jan 31 check actualmax month Dec # Make sure that the same value is returned after # normalization. get millis check actualmax month Dec clear all set date Meiji 45 Mar 31 check actualmax month Jul get millis check actualmax month Jul clear all set date Taisho 15 June 1 check actualmax month Dec get millis check actualmax month Dec clear all set date Showa 64 Jan 4 check actualmax month Jan get millis check actualmax month Jan clear all set date Heisei 31 Jan 4 check actualmax month Apr get millis check actualmax month Apr clear all set date Reiwa 2 Jan 1 set year $maxyear check actualmax month Aug get millis check actualmax month Aug clear all set date 17 Mar 1 check actualmax month Dec get millis check actualmax month Dec test Actual max DAY_OF_YEAR use jcal clear all set date Meiji 1 Dec 31 # Meiji Gan-nen is a leap year. check actualmax day_of_year 366 check day_of_year 366 clear all set date Meiji 45 Jan 1 # Meiji 45 or Taishi Gan-nen is also a leap year. check actualmax day_of_year 211 # 31+29+31+30+31+30+29 set date Meiji 45 Jul 29 check day_of_year 211 set date Taisho 1 Jul 31 get millis check actualmax day_of_year 155 # 366 - 211 set date Taisho 1 Dec 31 check day_of_year 155 clear all set date Taisho 15 Sep 23 check actualmax day_of_year 358 # 365 - 7 set date Taisho 15 Dec 24 check day_of_year 358 set date Showa 1 Dec 25 check actualmax day_of_year 7 set date Showa 1 Dec 31 check day_of_year 7 clear all set date Showa 64 Jan 3 check actualmax day_of_year 7 set date Showa 64 Jan 7 check day_of_year 7 set date Heisei 1 Aug 9 check actualmax day_of_year 358 # 365 - 7 set date Heisei 1 Dec 31 check day_of_year 358 # time zone dependent use tokyocal clear all set date Reiwa $maxyear Jan 1 # the last date of Reiwa is R292276976.08.17T16:12:55.807+0900 check actualmax day_of_year 229 # 31+28+31+30+31+30+31+17 test Actual max WEEK_OF_YEAR use jcal clear all set date Meiji 1 Jan 1 # Meiji gan-nen is a leap year. check actualmax week_of_year 52 clear all set date Meiji 45 Jan 1 check actualmax week_of_year 30 set date Taisho 1 July 31 check actualmax week_of_year 22 clear all set date Taisho 15 Sep 23 check actualmax week_of_year 51 set date Showa 1 Dec 25 check actualmax week_of_year 1 clear all set date Showa 64 Jan 3 check actualmax week_of_year 1 set date Heisei 1 Aug 9 check actualmax week_of_year 51 clear all set date Heisei 31 Apr 28 check actualmax week_of_year 17 set date Reiwa 1 Aug 9 check actualmax week_of_year 35 use tokyocal set date Reiwa $maxyear Jan 1 # the last date of Reiwa is R292276976.08.17T16:12:55.807+0900 (Sunday) # The year is equivalent to 2003 (Gregorian). check actualmax week_of_year 34 test Actual max WEEK_OF_MONTH use jcal clear all set date Meiji 45 Jul 1 check actualmax week_of_month 5 set date Taisho 1 Jul 31 check actualmax week_of_month 5 clear all set date Taisho 15 Dec 1 check actualmax week_of_month 5 set date Showa 1 Dec 25 check actualmax week_of_month 5 clear all set date Showa 64 Jan 1 check actualmax week_of_month 5 set date Heisei 1 Jan 8 check actualmax week_of_month 5 clear all set date Heisei 31 Apr 30 check actualmax week_of_month 5 set date Reiwa 1 May 1 check actualmax week_of_month 5 use tokyocal set date Reiwa $maxyear Jan 1 # the last date of Reiwa is R292276976.08.17T16:12:55.807+0900 (Sunday) # The year is equivalent to 2003 (Gregorian). check actualmax week_of_month 4 test Actual max DAY_OF_WEEK_IN_MONTH use jcal clear all set date Meiji 45 Jul 1 check actualmax week_of_month 5 set date Taisho 1 Jul 31 check actualmax week_of_month 5 clear all set date Taisho 15 Dec 1 check actualmax week_of_month 5 set date Showa 1 Dec 25 check actualmax week_of_month 5 clear all set date Showa 64 Jan 1 check actualmax week_of_month 5 set date Heisei 1 Jan 8 check actualmax week_of_month 5 clear all set date Heisei 31 Apr 30 check actualmax week_of_month 5 set date Reiwa 1 May 1 check actualmax week_of_month 5 use tokyocal clear all set date Reiwa $maxyear Jan 1 # the last date of Reiwa is R292276976.08.17T16:12:55.807+0900 (Sunday) # The year is equivalent to 2003 (Gregorian). check actualmax week_of_month 4 test Actual max YEAR use jcal clear all set date BeforeMeiji 1 Jan 1 check actualmax year 1867 set date Meiji 1 Jan 1 check actualmax year 45 set date Meiji 1 Jul 30 check actualmax year 44 set date Taisho 1 Jul 30 check actualmax year 15 set date Taisho 1 Dec 25 check actualmax year 14 set date Showa 2 Jan 1 check actualmax year 64 set date Showa 1 Dec 25 check actualmax year 63 set date Heisei 1 Jan 7 check actualmax year 64 set date Heisei 1 Aug 18 check actualmax year 30 set date Reiwa 1 Apr 30 check actualmax year 31 # Date/time beyond the last date in the max year. set date Reiwa 1 Aug 18 check actualmax year 292276975 test Least max YEAR set date Heisei 17 Mar 1 # Taisho is the shortest era, 14 years. # (See above actual max YEAR case.) check leastmax year 14 test Acutual min YEAR # Get minimum values for comparison clear all set era BeforeMeiji get min year assign $result $minyear set date $minyear Dec 31 eval $minyear + 1 assign $result $minyear_plus_one # BeforeMeiji 1 Dec 31 should exist in the minimum year which # should be the same value as the getMinimum() value. set date BeforeMeiji 1 Dec 31 check actualmin year $minyear # Jan 1 shouldn't exist in the same year. So the actual minimum is # $minyear + 1. set date 1 Jan 1 check actualmin year $minyear_plus_one # 1 should be returned if it's on a date of the last # year which also exists in the first year of each era. clear all set date Meiji 45 Jan 1 check actualmin year 1 clear all set date Taisho 14 Jul 30 check actualmin year 1 clear all set date Showa 60 Dec 25 check actualmin year 1 clear all set date Heisei 17 Jan 8 check actualmin year 1 # 2 should be returned if it's on a date of the last year which # doesn't exist in the first year of each era. (Meiji is an # exception.) clear all set date Taisho 14 Jul 29 check actualmin year 2 clear all set date Showa 60 Dec 23 check actualmin year 2 clear all set date Heisei 17 Jan 7 check actualmin year 2