Skip to content

Instantly share code, notes, and snippets.

@caoxudong
Created October 17, 2017 08:09
Show Gist options
  • Save caoxudong/94794290e716e8388f01f62bd41f9960 to your computer and use it in GitHub Desktop.
Save caoxudong/94794290e716e8388f01f62bd41f9960 to your computer and use it in GitHub Desktop.
计算夏令时的时间
package test.data;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
public class ComputeSummerTime {
/**
* Dates those have not EXACTLY 24 hours ?
**/
public static void testDayTime(TimeZone timeZone) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Time Zone is " + timeZone.getDisplayName() + " " + timeZone.getID());
Calendar start = Calendar.getInstance(timeZone);
start.setTime(new Date(0));// UTC 1970-01-01
System.out.println("start=" + fmt.format(start.getTime()));
long end = Calendar.getInstance(timeZone).getTimeInMillis();// current time
boolean find = false;
for (long i = start.getTimeInMillis(); i < end; i = start.getTimeInMillis()) {
start.add(Calendar.DATE, 1); // add one day
if ((start.getTimeInMillis() - i) % (24 * 3600 * 1000L) != 0) {
find = true;
System.out.println("from " + fmt.format(new Date(i)) + " to " + fmt.format(start.getTime())
+ " has " + (start.getTimeInMillis() - i) + "ms" + "["
+ (start.getTimeInMillis() - i) / (3600 * 1000L) + "hours]");
}
}
if (!find) {
System.out.println("Every day is ok.");
}
}
public static void main(String argv[]) throws Exception {
TimeZone timeZone = TimeZone.getDefault();
ComputeSummerTime.testDayTime(timeZone);
System.out.println("----------------------------------------------------------------");
timeZone = TimeZone.getTimeZone("GMT");
ComputeSummerTime.testDayTime(timeZone);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment