java存DB的时候 按照本地timeZone 然后toString后的时间存到DB
DB中取的时候 按照本地TimeZone作为取到的时间的TimeZone 所以 对于 DB中的时间 取出来的seconds 是根据timeZone不同而不同的,需要特别注意
1. DateFormat 不是线程安全 不能作为静态变量 sdf.setLenient(false);要求格式强匹配
2. new SimpleDateFormat("yyyy-MMM-dd",Locale.US) 需要指定Locale 对于MMM的情况 中国是五月,美国是May
3. new 出来的对象需要设置TimeZone DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.US); sdf.setTimeZone(TimeZone.UTC) 否则将以本地时间的timezone作为format的timeZone
4. Calendar.getInstance() 如果不指定TImezone会默认按照系统的Timezone来 应该注意涉及TimeZone的时候应该用 Calendar.getInstance(TimeZone.getTimeZone("UTC"))
所有有关于时间日期的 都要注意TIMEZONE
Date 清零 Calendar 对象的 set方法不要忘记 Millisecond
public static long formatDateCalendar(final long milli)
{
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(milli);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTimeInMillis();
}