Java date 日期转换24小时制 失败

Airforce-1 2011-09-29 07:52:58
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss", Locale.CHINA);
String dateString = "18:50:36";
Date timeDate = null;
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
dateFormat.setLenient(true);
try
{
timeDate = dateFormat.parse(dateString);
} catch (ParseException e)
{
timeDate = new Date();/* set to current time if anything is wrong */
Log.e(Log_tag, "The date format string is failed to parse! time_ = " + time_);
}

首先这个问题我已经在google上找了很久了,还是解决不掉,所以想请教大侠们:
转换后的时间怎么会变成 6:50:36, 怎么不是24小时制的Date,
...全文
537 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Airforce-1 2011-09-30
  • 打赏
  • 举报
回复
谢谢大家的热心回答,尤其感谢qybao,问题解决了,谢谢!
qybao 2011-09-30
  • 打赏
  • 举报
回复
int hour = cal.get(Calendar.HOUR); //这个是12小时制
改成
int horu = cal.get(Calendar.HOUR_OF_DAY); //这个是24小时制
Airforce-1 2011-09-30
  • 打赏
  • 举报
回复
我是用生成的Date再次解析的,

Calendar cal = Calendar.getInstance();
cal.setTime(timeDate_);
cal.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);

解析出来的时间是12小时制的,分钟和秒数都是正确的,难道要我自己作假,直接解析字符串,郁闷啊。。。
Airforce-1 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 airforce_zhl 的回复:]
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss", Locale.CHINA);
String dateString = "18:50:36";
Date timeDate = null;
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"))……
[/Quote]

我是用生成的Date再次解析成小时、分钟、秒数的:
             Calendar cal = Calendar.getInstance();
cal.setTime(timeDate_);
cal.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);

打印出来小时变成12小时制的了,分钟和秒数都是正确的,我郁闷,难道要我自己做个假,转换成24小时的显示出来么。。。。
风尘中国 2011-09-29
  • 打赏
  • 举报
回复
你的输出为6:50:36肯定你代码哪个地方的原因,单纯你给的这些代码不可能出现这种情况
给你贴一个例子

import java.util.TimeZone;
import java.util.Date;
import java.util.Locale;
import java.text.SimpleDateFormat;
import java.text.ParseException;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2011-9-29
* Time: 21:12:06
* To change this template use File | Settings | File Templates.
*/
public class CalendarTest1 {
public static void main(String[] args){
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss", Locale.CHINA);

String dateString = "18:50:36";
Date timeDate = null;
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
dateFormat.setLenient(true);

try{
timeDate = dateFormat.parse(dateString);
System.out.println(dateFormat.format(timeDate));//输出24小时制的时间
dateFormat.applyPattern("aa hh:mm:ss"); //输出12小时制 的时间

System.out.println(dateFormat.format(timeDate));
} catch (ParseException e)
{
timeDate = new Date();/* set to current time if anything is wrong */
// Log.e(Log_tag, "The date format string is failed to parse! time_ = " + time_);
}

}
}
qybao 2011-09-29
  • 打赏
  • 举报
回复
不知道LZ怎么打印这个时间的,是不是LZ的系统不是中国时区的?
System.setProperty("user.timezone", "GMT+8"); //或者Asia/Shanghai设置一下JVM的时区看看
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss", Locale.CHINA);
String dateString = "18:50:36";
Date timeDate = null;
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
dateFormat.setLenient(true);
try
{
timeDate = dateFormat.parse(dateString);
System.out.println(timeDate); //打印看看
} catch (ParseException e)
{
timeDate = new Date();/* set to current time if anything is wrong */
Log.e(Log_tag, "The date format string is failed to parse! time_ = " + time_);
}
孟祥月 2011-09-29
  • 打赏
  • 举报
回复
SimpleDateFormat 楼主怎么java帮助文档里没有setLenient这个啊,看了半天不解啊
qybao 2011-09-29
  • 打赏
  • 举报
回复
LZ是怎么打印这个时间的?

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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