一个关于calendar类的小问题

一针见雪 2011-08-03 09:10:46
当我有个Calendar变量的HOUR_OF_DAY为12时,为什么取出来显示出来变成了0?
...全文
91 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
分,这个事。。以后再说。。
一针见雪 2011-08-04
  • 打赏
  • 举报
回复
那好吧,算了,先这样吧,我自己再去研究研究[Quote=引用 13 楼 ioe_gaoyong 的回复:]

代码不全,关键代码一直没给出来,能回答你之前的问题都是靠猜的,这个问题不想继续猜了

引用 12 楼 royzhanggy 的回复:

确实就是这个问题,改了yyyy-MM-dd HH:mm:ss之后就正确显示了,可是还有一点不怎么懂,我将数据库中的数据取出来赋值给Calendar对象后有个方法是直接判断Calendar.AM_PM的,可以正确判断啊,所以想问下Calendar对象默认使……
[/Quote]
风尘中国 2011-08-04
  • 打赏
  • 举报
回复
代码不全,关键代码一直没给出来,能回答你之前的问题都是靠猜的,这个问题不想继续猜了

[Quote=引用 12 楼 royzhanggy 的回复:]

确实就是这个问题,改了yyyy-MM-dd HH:mm:ss之后就正确显示了,可是还有一点不怎么懂,我将数据库中的数据取出来赋值给Calendar对象后有个方法是直接判断Calendar.AM_PM的,可以正确判断啊,所以想问下Calendar对象默认使用的是12小时还是24小时制?有段源码贴上

package cn.edu.nju.software.atm.android.service……
[/Quote]
Codefans_Fan 2011-08-04
  • 打赏
  • 举报
回复
分数多很有用?不明白楼上
一针见雪 2011-08-04
  • 打赏
  • 举报
回复
确实就是这个问题,改了yyyy-MM-dd HH:mm:ss之后就正确显示了,可是还有一点不怎么懂,我将数据库中的数据取出来赋值给Calendar对象后有个方法是直接判断Calendar.AM_PM的,可以正确判断啊,所以想问下Calendar对象默认使用的是12小时还是24小时制?有段源码贴上

package cn.edu.nju.software.atm.android.services;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import android.content.Context;

import cn.edu.nju.software.atm.android.model.Conference;

public class GroupList{
Context context;

public GroupList(Context context){
this.context=context;
}

public ArrayList<ArrayList<Conference>> groupList(Date date) throws ParseException{
ArrayList<ArrayList<Conference>> grouplist = new ArrayList<ArrayList<Conference>>();
ArrayList<Conference> am = new ArrayList<Conference>();
ArrayList<Conference> pm = new ArrayList<Conference>();
DatabaseAdapter dbadapter = new DatabaseAdapter(context);
ArrayList<Conference> conflist=new ArrayList<Conference>();
conflist = dbadapter.conferenceList(date);
int length = conflist.size();
for(int i=0;i<length;i++){
Conference confer = conflist.get(i);
Calendar calendar=Calendar.getInstance();
calendar.setTime(confer.getStartTime());
int r = calendar.get(Calendar.AM_PM);
if(r==Calendar.AM){
am.add(confer);
}
else pm.add(confer);
}
grouplist.add(am);
grouplist.add(pm);
return grouplist;
}
}
[Quote=引用 7 楼 ioe_gaoyong 的回复:]
估计你的问题就是采用了上面说的SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");这种格式,这里面的hh解析的是12小时的小时值,必须配合am pm才能行,而看你数据库的记录,应该采用SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");这种……
[/Quote]
风尘中国 2011-08-04
  • 打赏
  • 举报
回复
估计你的问题就是采用了上面说的SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");这种格式,这里面的hh解析的是12小时的小时值,必须配合am pm才能行,而看你数据库的记录,应该采用SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");这种格式

你贴的东西太少了,坑爹啊,我得猜测很多东西,强烈要求结贴的时候加分,20分太……
风尘中国 2011-08-04
  • 打赏
  • 举报
回复
楼主先看看这段代码
import java.util.*;
import java.text.SimpleDateFormat;

public class HelloWorld {
public static void main(String[] args)throws Exception{
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

Date endTime1=sdf1.parse("2012-05-23 12:00:00");
Date endTime2=sdf2.parse("2012-05-23 12:00:00");



// System.out.println(c.getTime());
System.out.println(endTime1);
System.out.println(endTime2);


}

}
为了梦想 2011-08-04
  • 打赏
  • 举报
回复
楼主,通过你的代码可以看出你这里使用的是Calendar.HOUR_OF_DAY
这里给你粘一段Calendar的源码你就明白了
/**
* Field number for <code>get</code> and <code>set</code> indicating the
* hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
* E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
*
* @see #HOUR
*/
public final static int HOUR_OF_DAY = 11;

这个使用的是24小时制,所以出现楼主你的问题,以后可以看看源代码,你就可以自己解决问题了。
祝楼主好运!
风尘中国 2011-08-04
  • 打赏
  • 举报
回复
分数都是浮云,能解决问题才是王道

[Quote=引用 8 楼 f562867448 的回复:]

分数多很有用?不明白楼上
[/Quote]
一针见雪 2011-08-03
  • 打赏
  • 举报
回复
public String getTime() {
// TODO Auto-generated method stub
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(startTime);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(endTime);
return calendar1.get(Calendar.HOUR_OF_DAY)+":"+calendar1.get(Calendar.MINUTE)+"~"+calendar2.get(Calendar.HOUR_OF_DAY)+":"+calendar2.get(Calendar.MINUTE)+calendar2.get(Calendar.MINUTE);
}
就这个方法用了,其中一个endTime从数据库中取出来为2012-5-23 12:00:00,结果到界面上就显示成0:00了
[Quote=引用 4 楼 ioe_gaoyong 的回复:]

楼主把赋值给Calendar的代码贴出来看看,这才能解决问题啊
[/Quote]
风尘中国 2011-08-03
  • 打赏
  • 举报
回复
楼主把赋值给Calendar的代码贴出来看看,这才能解决问题啊
一针见雪 2011-08-03
  • 打赏
  • 举报
回复
就是我现在有个Date变量,在数据库中存储的是2012-5-23 12:00:00,现在取出来,赋值给一个Calendar对象,结果Calendar.HOUR_OF_DAY就变成了0。。。是不是因为Calendar类本来只是12小时制的,结果把这个时间默认成下午了?[Quote=引用 1 楼 acherat 的回复:]

你这描述真少。。。
[/Quote]
一针见雪 2011-08-03
  • 打赏
  • 举报
回复
就是我现在有个Date变量,在数据库中存储的是2012-5-23 12:00:00,现在取出来,赋值给一个Calendar对象,结果Calendar.HOUR_OF_DAY就变成了0。。。是不是因为Calendar类本来只是12小时制的,结果把这个时间默认成下午了?
AcHerat 2011-08-03
  • 打赏
  • 举报
回复
你这描述真少。。。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧