1. System.currentTimeMillis()返回的是哪个时区时间?

返回的是utc0的时间


2. 如果上面返回的是utc0的时间,为什么new Date(System.currentTimeMillis())可以打印东八区的时间?

因为电脑时区设置成了东八区,所以Timezone.getDefault()是东八区,打印的时候会自动加上东八区的偏移量8*60*60*1000。


可以把电脑时区改成utc0,然后进行测试,会发现System.currentTimeMillis()打印的时间基本不会变,还是utc0的时间。