要么我缺少一些完全明显的东西,要么对SimpleDateFormat的行为做出无根据的假设.
我认为它应该是对称的,对吧?如果我有
SimpleDateFormatter formatter;
String datestr=...
Date d = formatter.parse(datestr);
String s=formatter.format(d);
Run Code Online (Sandbox Code Playgroud)
我应该找回原来的String.但是 -
public static final String DATE_FORMAT = "E MMM dd HH:mm:dd zz yyyy";
String test = "Mon Nov 29 09:53:24 EST 2010";
long l = new SimpleDateFormat(DATE_FORMAT).parse(test).getTime();
System.out.println(test);
System.out.println(new SimpleDateFormat(DATE_FORMAT).format(new Date(l)));
Run Code Online (Sandbox Code Playgroud)
打印出来:
美国东部时间2010年11月29日星期一09:53:24
11月24日星期三09:53:24 EST 2010
我怎么会失去5天?
运行以下代码时,我得到意外的输出,
DateFormat df = new SimpleDateFormat("YYYY-MM-dd");
Date date = df.parse("2012-06-23");
System.out.println(df.format(date));
Run Code Online (Sandbox Code Playgroud)
输出:2012-01-01
我期待2012-06-23作为输出,我做错了什么?
SimpleDateFormat formatter = new SimpleDateFormat("mm/dd/yyyy");
dt = formatter.parse(temp[0]);
Run Code Online (Sandbox Code Playgroud)
给了我错误
java.text.ParseException:无法解析的日期:"30-MAR-07"
有没有什么办法可以将给定的String格式化为Date对象,而无需编写自己的字符串拆分和转换为月份数字方法?谢谢
我需要使用以下方法将我获得的UTC时间字符串转换为本地时间,
String dateCreate = "2013-07-01T04:37:14.771468Z"
DateFormat dfParse = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss'Z'");
dfParse.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("Asia/Colombo"));
java.util.Date dateTime;
dateTime = dfParse.parse(dateCreate);
String dteCreate = df.format(dateTime);
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题.:)
我试图使用SimpleDateFormat解析此字符串20130718T090000Z.我喜欢这个:
String timeString= "20130718T090000Z";
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmssZ");
Date date= dateFormat.parse(timeString);
Run Code Online (Sandbox Code Playgroud)
我收到了一个Unparsable错误.从这里引用http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#rfc822timezone我发现我没有做错,或者我做错了?韩国社交协会.
我正在尝试解析一个字符串以获取Date对象,但它总是返回Sun. 2012年12月30日为日期.有没有人对我做错了什么有任何想法?
我使用YYYY-MM-dd格式的字符串使用相同的代码,它工作得很好,所以我不确定为什么切换到这种格式会导致问题.
public static Date getDateObjFromStr(String dateStr)
{
DateFormat formatter = new SimpleDateFormat("MM/dd/YYYY");
Date dateObj;
try {
dateObj = formatter.parse(dateStr);
return dateObj;
} catch(Exception e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)


我正在处理卡的到期日期.我有一个API,我将以" yyMM "格式将截止日期作为" 字符串 ".我在这里尝试使用
带有TimeZone.getTimeZone的SimpleDateFormat("UTC")
所以我的代码就像
String a= "2011";
SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(a);
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
现在问题是,当我通过2011年时,它给出的是 Sat Oct 31 17:00:00 PDT 2020
在这里你可以看到我正在通过11个月,但它将它转换为10月而不是11月.
为什么?
还有什么其他选项可以用来将字符串转换yyMM为Date with Timezone?
我用以下代码解析datetime:
String parseDate(String tranDateTime, String originalDateFormat, String toDateFormat) throws ParseException {
SimpleDateFormat originalMonthYear = new SimpleDateFormat(originalDateFormat);
Date date = originalMonthYear.parse(tranDateTime);
SimpleDateFormat formatter = new SimpleDateFormat(toDateFormat);
return formatter.format(date);
}
Run Code Online (Sandbox Code Playgroud)
并尝试解析日期时间值,如下所示:
parseDate("2017-08-16T00:00:00Z",
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
抛出异常:
java.text.ParseException:无法解析的日期:"2017-08-16T00:00:00Z"
但是,当我更改日期值时"2017-08-16T02:54:15.537Z",功能正常.我不知道为什么.
我已经采取了SOF和其他网站上给出的所有答案,并尝试这样做:
String fromDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sssX").format(new DateTime().plusMonths(-6));
Run Code Online (Sandbox Code Playgroud)
但是我被给了例外:
线程"main"中的异常java.lang.IllegalArgumentException:无法将给定的Object格式化为Date
我究竟做错了什么?
I'm using SimpleDateFormat in Java and for some reason it is not detecting the month. Here is my code:
/**
* Takes a date/time stamp which looks like yyyyMMDDhhmmss on converts it to
* yyyy-MM-DDThh:mm:ssZ
*
* @param timestamp
* @return
*/
public static String ConvertDate(String timestamp) {
if (timestamp == null || timestamp.length() < 14)
return null;
String timeString = null;
System.out.println(timestamp);
DateFormat outputFormat = new SimpleDateFormat("YYYY-MM-DD'T'hh:mm:ss'Z'");
DateFormat inputFormat = new SimpleDateFormat("yyyyMMDDhhmmss");
try{
Date date = inputFormat.parse(timestamp);
timeString = …Run Code Online (Sandbox Code Playgroud) java ×10
simpledateformat ×10
date ×5
date-format ×3
datetime ×2
date-parsing ×1
format ×1
jodatime ×1