如何将用户输入的字符串日期转成DateTime型

Even713 2010-09-19 10:10:21
相同的问题贴:http://topic.csdn.net/u/20100919/10/4316f657-626f-4b5a-ab25-792ec0298c9e.html?7412

用户输入这样格式的日期:12-28-2011 10:44 am GMT 即mm-dd-yyyy hh:mm am/pm timezone

如何将这样的字符串转换成DateTime型?
我现在的做法是:

public class test {
public static void main(String[] args) {
String endDate = "9-3-2011 11:22 am GMT";
DateTimeFormatter fmt = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm aa zzz");
try{
DateTime expiration = fmt.parseDateTime(endDate);
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
}

或者:

public class test {
public static void main(String[] args) {
String endDate = "9-3-2011 11:22 am GMT";
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.appendDayOfMonth(2)
.appendLiteral("-")
.appendMonthOfYear(2)
.appendLiteral("-")
.appendYear(4,4)
.appendLiteral(" ")
.appendHourOfHalfday(2)
.appendLiteral(":")
.appendMinuteOfHour(2)
.appendLiteral(" ")
.appendHalfdayOfDayText()
.appendLiteral(" ")
.appendTimeZoneName()
.toFormatter();

try{
DateTime expiration = fmt.parseDateTime(endDate);
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
}


都会报错:
Invalid format: "9-3-2011 11:22 am GMT" is malformed at "GMT"

相关参考链接:
http://joda-time.sourceforge.net/userguide.html#DateTime_methods

请谁知道的一定帮帮忙,分不够可另外开贴!谢谢!!
...全文
281 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
txwh_2169 2010-09-19
  • 打赏
  • 举报
回复
public class Test {
public static void main(String[] args) {
String endDate = "9-3-2011 11:22 am GMT";
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm aa zzz",Locale.US);
dateFormat.setLenient(false);
try {
Date temp = dateFormat.parse(endDate);
System.out.println(dateFormat.parse(endDate));
dateFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm aa zzz",Locale.CHINA);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormat.format(temp));
} catch (ParseException e) {
e.printStackTrace();
}
}
}

Result:
Sat Sep 03 19:22:00 CST 2011
09-03-2011 11:22 上午 GMT
txwh_2169 2010-09-19
  • 打赏
  • 举报
回复
public class Test {
public static void main(String[] args) {
String endDate = "9-3-2011 11:22 am GMT";
//DateTimeFormatter fmt = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm aa zzz");
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy HH:mm aa zzz",Locale.US);
dateFormat.setLenient(false);
try {
System.out.println(dateFormat.parse(endDate));
} catch (ParseException e) {
e.printStackTrace();
}
}
}


Result:Sat Sep 03 19:22:00 CST 2011
lnner 2010-09-19
  • 打赏
  • 举报
回复
public static Date toDate(String dateString, String formatString)//formatStrings是日期格式,dateString是日期字符串
{
SimpleDateFormat format = new SimpleDateFormat(formatString);
try
{
return format.parse(dateString);
}
catch (ParseException e)
{
throw new RuntimeException(e);
}
}
Even713 2010-09-19
  • 打赏
  • 举报
回复
楼上能帮忙仔细看下问题吗?问题是时间里包含有timezone时区,就无法转型了
时区啊!
亲努力啊 2010-09-19
  • 打赏
  • 举报
回复

SimpleDateFormat fr=new SimpleDateFormat("yyyy-MM-dd");
fr.parse(endDate);

81,091

社区成员

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

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