我在java中的日期转换有一点问题.当我把19700101放到SimpleDateFormat然后调用getTime时我得到-3600000.我写测试:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = dateFormat.parse("19700101");
System.out.println(date.getTime());
System.out.println(dateFormat.format(new Date(0)));
System.out.println((new Date(0)).getTime());
Run Code Online (Sandbox Code Playgroud)
结果应该是:
0
19700101
0
Run Code Online (Sandbox Code Playgroud)
但我得到了
-3600000
19700101
0
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么SimpleDateFormat返回-3600000(20Nov1969)?我在哪里可以找到有关格式化和转换错误的信息?
我必须使用什么样的字符串这个字符串cos不起作用:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss");
Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,需要能够使用java.util.date格式找到两个日期之间的差异.我正在使用SimpleDateFormat类来解析字符串输入,但它似乎解析错误.这是我的代码.我感谢任何帮助
SimpleDateFormat s = new SimpleDateFormat("yyyy/mm/dd");
Date startDate = s.parse(dateField.getText()); //input is 2012/03/10
System.out.println(START_DATE);//output is Tue Jan 10 00:03:00 MST 2012
Run Code Online (Sandbox Code Playgroud) 我想转换Tue Jun 01 00:00:00 IST 112成01-JUN-2012
我用了
Calendar calendar = new GregorianCalendar(year, 6, Calendar.DAY_OF_MONTH);
Date maxDate=new Date();
maxDate=calendar.getTime();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
SimpleDateFormat s=new SimpleDateFormat("dd-mmm-yyyy");
s.format(maxDate);
Run Code Online (Sandbox Code Playgroud)
但我明白了 30-000-0112
这是一个愚蠢的问题,但我看不出我做错了什么.我想解析一个像24:00日期对象的字符串.我知道如果我们使用kk:mm日期格式,时间将是从01:00到24:00(来自API).但我不能让下面的代码工作.
String test = "24:00";
System.out.println("TEST: " + new SimpleDateFormat("kk:mm").parse(test));
Run Code Online (Sandbox Code Playgroud)
输出:
TEST: Thu Jan 01 00:00:00 GMT 1970
Run Code Online (Sandbox Code Playgroud)
预期产量:
TEST: Thu Jan 01 24:00:00 GMT 1970
Run Code Online (Sandbox Code Playgroud)
编辑:
System.out.println("TEST: " + new SimpleDateFormat("k:mm:ss").format(new SimpleDateFormat("k:mm:ss").parse(test)));
Run Code Online (Sandbox Code Playgroud)
这打印 TEST: Thu Jan 01 24:00:00 GMT 1970
但解析时为什么不呢?
任何帮助是极大的赞赏
我有以下操作,它应该以指定的格式解析日期.但它不会解析并抛出不可解析的异常.有人可以纠正我错在哪里.该字段是TimeStamp,DB是Oracle.
private XMLGregorianCalendar stringToXMLGregorianCalendar(String s)
throws DatatypeConfigurationException, ParseException {
XMLGregorianCalendar result = null;
Date date = null;
SimpleDateFormat simpleDateFormat;
GregorianCalendar gregorianCalendar;
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
date = simpleDateFormat.parse(s);
gregorianCalendar = (GregorianCalendar) GregorianCalendar
.getInstance();
gregorianCalendar.setTime(date);
result = DatatypeFactory.newInstance().newXMLGregorianCalendar(
gregorianCalendar);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 当我执行以下代码时
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/YYYY");
Date today=new Date();
String olddate="03/11/2016";
System.out.println(sdf.parse(olddate));
Run Code Online (Sandbox Code Playgroud)
为什么结果显示在2015年12月27日00:00:00.
但是我期待2016年11月3日00:00:00 IST 2016.
任何人都可以请解释.我怎样才能获得所需的输出.
我对时间格式转换有奇怪的问题。
我有string,时间=“ 11:00”
我必须将上述字符串转换为日期,并且正在执行以下操作:
Calendar cal= Calendar.getInstance();
cal.setTime(Convert.fromShortTime(timeIn)); // this method is below
public static SimpleDateFormat SHORT_TIME = new SimpleDateFormat("HH:mm");
public static Date fromShortTime(String shortTime)
{
try {
return shortTime == null ? null : SHORT_TIME.parse(shortTime);
} catch (ParseException e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
所以cal.setTime(Convert.fromShortTime(timeIn)); 将该值更改为:Thu Jan 01 10:00:00 PST 1970(比字符串少1小时)。
我的笔记本电脑时间是山区时间,设备时间是太平洋时间。如果我将笔记本电脑的时间更改为太平洋时间,则可以正常工作。
我想知道为什么Android Studio的笔记本电脑时间会影响SimpledateFormat?
所以我有这样的时间戳:
1990-10-31 18:43:12
我想计算这两个时间戳之间的差异。
我尝试过的是:
val t1 = new java.text.SimpleDateFormat("yyyy-mm-dd HH:mm:ss")
val t2 = new java.text.SimpleDateFormat("yyyy-mm-dd HH:mm:ss")
t1.parse(timestamp1)
t2.parse(timestamp2)
Run Code Online (Sandbox Code Playgroud)
但是我该怎么办?
我需要对String表示日期的列表进行排序.
我尝试了以下代码:
try {
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
Collections.sort(days,
(s1, s2) -> sdf.parse(s1).compareTo(sdf.parse(s2)));
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但在Eclipse中我得到编译时错误sdf.parse(s1):
未处理的异常类型
ParseException
有解决方案吗
我的输入列表是:
[2016-01-02, 2016-01-03, 2016-01-01]
Run Code Online (Sandbox Code Playgroud)