我很难解析/格式化从Web服务收到的日期字符串.我试过多种方法,但没有运气.
示例日期字符串:
2011-10-05T03:00:00Z
Run Code Online (Sandbox Code Playgroud)
例外:
W/System.err(10072): java.text.ParseException: Unparseable date: "2011-10-05T05:00:00Z" (at offset 10)
W/System.err(10072): at java.text.DateFormat.parse(DateFormat.java:626)
Run Code Online (Sandbox Code Playgroud)
示例代码:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:SSSS");
Date date = formatter.parse(info.AiringTime);
Run Code Online (Sandbox Code Playgroud)
我发现如果我删除日期和时间之间的"T"并用空格替换它,它将格式化正常.有人有什么建议吗?
--UPDATE--
在深入研究API文档之后,我发现了这个:
所有响应DateTime值均为UTC格式.您需要应用UTC偏移量来计算显示的本地时间.
DateTime是以下列格式之一指定的日期和时间值:
UTC格式:YYYY-MM-DDThh:mm:ssZ.例如:2011-03-15T02:00:00Z.
偏移的当地时间:YYYY-MM-DDThh:mm:ss +或 - hh:mm(正偏移或负偏移).例如,美国太平洋时间:2011-03-14T06:00:00-08:00.
有关UTC格式方法的任何建议吗?
出于某种原因,当我在MimeMessage上调用Transport.send()时,我得到了一个javax.mail.internet.ParseException.这之前它只是一个纯文本电子邮件,但当我改变它以使文本和HTML开始爆炸.我有什么想法我做错了吗?
@Resource(mappedName = "java:/Mail")
private Session mailer;
public void sendMessage(String toEmailAddress, String subject, String content, String text) throws Exception {
try {
Message message = new MimeMessage(mailer);
MimeMultipart rootMixedMultipart = new MimeMultipart("mixed");
message.setContent(rootMixedMultipart);
MimeMultipart nestedRelatedMultipart = new MimeMultipart("related");
MimeBodyPart relatedBodyPart = new MimeBodyPart();
relatedBodyPart.setContent(nestedRelatedMultipart);
rootMixedMultipart.addBodyPart(relatedBodyPart);
MimeMultipart messageBody = new MimeMultipart("alternative");
MimeBodyPart bodyPart = null;
for (int i = 0; i < nestedRelatedMultipart.getCount(); i++) {
BodyPart bp = nestedRelatedMultipart.getBodyPart(i);
if (bp.getFileName() == null) {
bodyPart = (MimeBodyPart) bp;
}
}
if …Run Code Online (Sandbox Code Playgroud) 在android中,我在后端使用Parse和back4app.com,每当我在返回Save Callback中使用myParseobject.saveInBackground()时,我都会收到错误消息,ParseException : only ACLs can be stored in the ACL key如果有人对此有任何想法,请分享。
我希望将模式为"yyyy.MM.dd HH.mm.ss.S"的输入字符串转换为Date.输入字符串是1988.07.29 12:12:12.123
我是通过以下方式完成的:
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
Date date = dateFormat.parse(value);
Run Code Online (Sandbox Code Playgroud)
我得到ParseException,说输入的日期是不可解析的.
首先,我的模式是否与输入字符串相对应?如果是的话,我在这里做错了什么?
我的日期格式为“yyyy-MM-dd'T'HH:mm:ss.sssZ”。例如日期是“2018-07-17T09:59:51.312Z”。我正在使用下面的代码来解析 Java 中的字符串。
String date="2018-07-17T09:59:51.312Z";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sssZ");
Date transactionDateTime = simpleDateFormat.parse(date);
Run Code Online (Sandbox Code Playgroud)
这给了我“无法解析的日期:”异常。谁能告诉我如何做到这一点?
我现在有两种方法.根据场景,当我从数据库中获取数据字段时,它采用BigDecimal格式.所以我决定为它编写一个测试(formatDate()方法).我将BigDecimal传递给方法,但似乎我写了一些错误的代码.从我在示例和SimpleDateFormat API中看到的,我认为我已经正确编写了代码,但我似乎无法弄清楚它抛出一个parseEx会出现什么问题.有人能给我一些提示吗?
private void loadMap() {
//TODO: Uncomment when finished testing.
//DO OTHER STUFF
BigDecimal bd = new BigDecimal(12051998);
System.out.println(formatDate(bd));
}
private String formatDate(BigDecimal bd) {
String value = bd.toString();
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
try {
return format.parse(value);
} catch (ParseException pEx) {
logger.error(pEx);
return "Bad Date Format";
}
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢Warmest,
我需要在Java中将字符串数组转换为Date类型。我查了一些示例代码,它们几乎都要求做同样简单的事情。这就是我在做什么:
String[] dateString = { "2014/05/01", "2014/05/02", "2014/05/03", "2014/05/04", "2014/05/05"};
Date[] dt = new Date[5];
for(int i=0;i<count;i++){
dt[i]= new SimpleDateFormat("yyyy/mm/dd").parse(dateString[i]);
}
Run Code Online (Sandbox Code Playgroud)
问题出在循环内的行上,我收到一条错误消息,指出:“ ParseException未处理的异常”。Eclipse建议我用try and catch块将其包围,这是我做的。它现在可以运行,但是我在dt数组中输入的日期与我输入的日期不匹配。我想我正在获取某种默认值,该值从2014年1月1日开始。
有人知道这是什么以及如何解决?
谢谢!