使用SimpleDateFormat解析ISO8601的日期和时间时,我遇到了一个奇怪的问题.相关代码是:
public class DateHelper
{
private static SimpleDateFormat iso8601formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
public static Date parseISO8601(String date) throws ParseException
{
Date result = iso8601formatter.parse(date);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
对于输入我给它一个字符串
2010-09-06T15:30:00+02:00
Run Code Online (Sandbox Code Playgroud)
作为回报,我得到一个Date对象,日期设置为2010年1月6日,时间为13:30,时区为GMT + 00:00.
编辑:我也尝试使用"2010-09-06T15:30:00 + 0200",结果相同.
令人困惑的是,日期设置部分正确,只是月份设置错误.
问题显示在Android 1.6和Android 2.2上.
我该如何解决?
这可能是一个愚蠢的问题,但我不懂java日期函数.这是一些代码:
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
Date s = sdf.parse(var);
Calendar scal = java.util.GregorianCalendar.getInstance();
scal.setTime(s);
Log.w("Time: ", Long.toString(s.getTime()));
Run Code Online (Sandbox Code Playgroud)
如果var ="10:00",我得到"64800000".
如果var ="11:00",我得到"68400000".
如果var ="12:00",我得到"28800000".
如果var ="13:00",我得到"75600000".
如果var ="14:00",我得到"79200000".
如果var ="00:00",我得到"28800000".
什么是12:00?为什么,当var = 12:00时,我得到与00:00时相同的结果?所有其他结果似乎都是正确的.我显然不理解java日期函数,但我似乎无法在任何地方找到任何解释.这搞砸了我的时间跨度计算器.
我是Java的新手,我对使用SimpleDateFormat和使用时有点困惑Calendar.我有一个Date-Object,想要提取GMT日期字符串yyyy-MM-dd HH:mm:ss.我住在德国,目前我们是GMT +0200.我的Date-Object的时间就是例如2011-07-18 13:00:00.我现在需要的是2011-07-18 11:00:00.我的时区的偏移量应自动计算.
我试过这样的事情,但我想某处有一个错误:
private String toGmtString(Date date){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone timeZone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance(new SimpleTimeZone(timeZone.getOffset(date.getTime()), "GMT"));
sd.setCalendar(cal);
return sd.format(date);
}
Run Code Online (Sandbox Code Playgroud)
在某些设备上,datetring会像我想要的那样返回.在其他设备上,偏移量未正确计算,我从输入日期 - 对象接收日期和时间.你能给我一些提示或建议吗?我想我的方式获得默认时区不起作用?
我正在从XML解析这个日期格式:=>" 2011-12-06T07:41:14.016 + 00:00 ",我收到此错误:
我确定这是我正在使用的格式化声明,但我无法弄清楚它应该是什么......
这是我正在使用的声明:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ:ss");
Run Code Online (Sandbox Code Playgroud)
我得到了如何创建这个部分的格式:" 2011-12-06T07:41:14 ....",这是另一部分:=>".016 + 00:00 "这就是我的循环.
我已经在这里寻找答案:Android SimpleDateFormat页面,这里是Oracle SimpleDateFormat页面,但我担心我遗漏了一些基本的东西......
您是否对该特定日期格式的正确格式声明或相关资源有任何建议?
非常感谢提前!
我有这样的日期输入日期:{ts'2012-08-13 02:30:01'}
我相信我可以用单引号来逃避无效部分,但我在无效部分中有一个单引号.我怎么逃避?我尝试了几种模式,但它不起作用.
谢谢,
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy' 'HH:mm:ss");
Date d = (Date)formatter.parse(dateTime);
System.out.println("date in controller "+d);
Run Code Online (Sandbox Code Playgroud)
我把输出作为
日期在控制器Mon Dec 31 16:04:57 IST 2012
请建议一种以MM/dd/yyyy HH:mm:ss格式输出日期的方法.需要以日期格式输出而不是字符串,以便将输出存储datetime在mysql db 中的字段中
我正在尝试将以下字符串解析为Date对象:
2013-12-26T01:00:56.664Z
Run Code Online (Sandbox Code Playgroud)
使用这个SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Run Code Online (Sandbox Code Playgroud)
但是我得到了:
java.text.ParseException: Unparseable date: "2013-12-26T01:00:56.664Z" (at offset 19)
Run Code Online (Sandbox Code Playgroud)
我做错了什么,我该如何处理日期中T的Z字母?
我试图将输入字符串日期解析为Date.它无法检测输入中的AM/PM标签.它应该增加指定日期和返回日期的时间.但它无法解析AM/PM标签.03:00 PM在日期中解析为03:00:00.应该是15:00:00.
输出:日期:星期二12月22日03:00:00 UTC 2015日历:星期二12月22日星期二11:15:00结果:2015-12-22 11:15 AM
我使用错误的日期格式吗?
这是我的代码:
import java.util.*;
import java.text.*;
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("Result : "+Main.addHoursToDate("2015-12-22 03:00 `enter code here`PM",8,15,0));
}
public static String addHoursToDate(String date, int hoursToAdd, int minsToAdd, int secToAdd){
String result = "";
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm aa");
Date dt = sdf.parse(date);
System.out.println("Date : " + dt.toString());
Calendar cl = Calendar.getInstance();
cl.setTime(dt);
cl.add(Calendar.HOUR_OF_DAY, hoursToAdd);
cl.add(Calendar.MINUTE, minsToAdd);
cl.add(Calendar.SECOND, secToAdd);
SimpleDateFormat dfCal = new …Run Code Online (Sandbox Code Playgroud) DateFormat formatter = new SimpleDateFormat("hh:mmaa");
formatter.parse("01:20pm")
Run Code Online (Sandbox Code Playgroud)
我试图以01:20 pm的格式解析时间.如果我运行上面的代码,我会得到以下异常:
java.text.ParseException: Unparseable date: "01:20pm"
at java.text.DateFormat.parse(DateFormat.java:366)
Run Code Online (Sandbox Code Playgroud)
至于我在SimpleDateFormat构造函数中放置的格式,我没有看到任何错误.这里出了什么问题?
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, new Locale("SV", "SE"));
((SimpleDateFormat) dateFormat).toPattern();
Run Code Online (Sandbox Code Playgroud)
在Java 8中,这一行在"yyyy-MM-dd"Java 9中生成"y-MM-dd".
这对我们的遗留代码有一些严重的问题,是否有某种方法可以恢复行为?
java ×10
simpledateformat ×10
date ×8
android ×5
parsing ×3
date-format ×1
datetime ×1
gmt ×1
java-9 ×1
time ×1