Squ*_*onk 6 android gregorian-calendar
我正在尝试创建一个"固定"时间(24小时时钟格式的午夜,即00:00:00),以使用以下内容设置为SQL SELECT查询的字符串...
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
GregorianCalendar todayDate = new GregorianCalendar();
Log.d(TAG, "todayDate: " + todayDate.getTime().toString());
Log.d(TAG, "formatted todayDate: " + sdf.format(todayDate.getTime()));
todayDate.clear(Calendar.HOUR);
todayDate.clear(Calendar.MINUTE);
todayDate.clear(Calendar.SECOND);
todayDate.set(Calendar.HOUR, 0);
todayDate.set(Calendar.MINUTE, 0);
todayDate.set(Calendar.SECOND, 0);
Log.d(TAG, "formatted modified todayDate: " + sdf.format(todayDate.getTime()));
Run Code Online (Sandbox Code Playgroud)
这是好的,除非当前时间是PM.例如,
todayDate: Fri Jan 28 23:34:34 GMT 2011
formatted todayDate: 2011-01-28 23:34:34
formatted modified todayDate: 2011-01-28 12:00:00 <- THE hour is 12 not 00
Run Code Online (Sandbox Code Playgroud)
如果我在当前时间在午夜和中午之间(即00:00:00 - > 11:59:59 AM)执行此操作,那么我在格式化字符串中的小时会正确设置为00.如果我在任何时候执行此操作中午之后和午夜之前的时间我得到12小时而不是00小时.
任何人都可以解释这个并帮我找到解决方法(或其他做事方式)吗?
arm*_*ino 13
您需要设置HOUR_OF_DAY以0代替HOUR
todayDate.set(Calendar.HOUR_OF_DAY, 0);
Run Code Online (Sandbox Code Playgroud)
来自API 文档:
HOURget和set的字段编号表示上午或下午的小时.小时用于12小时制(0 - 11).中午和午夜由0表示,而不是由12表示.例如,在10:04:15.250 PM,HOUR为10.
HOUR_OF_DAY获取和设置的字段编号,表示一天中的小时.HOUR_OF_DAY用于24小时制.例如,在下午10:04:15.250,HOUR_OF_DAY是22.
| 归档时间: |
|
| 查看次数: |
6398 次 |
| 最近记录: |