Java 如何转换;2012年6月18日星期一00:00:00 IST”;到2012年6月18日?
我有一个类似以下的值Java 如何转换;2012年6月18日星期一00:00:00 IST”;到2012年6月18日?,java,date,Java,Date,我有一个类似以下的值Mon Jun 18 00:00:00 IST 2012,我想将其转换为18/06/2012 如何转换这个 我试过这个方法 public String toDate(Date date) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); Date theDate = null; //String in = date + "/" + month
Mon Jun 18 00:00:00 IST 2012
,我想将其转换为18/06/2012
如何转换这个
我试过这个方法
public String toDate(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date theDate = null;
//String in = date + "/" + month + "/" + year;
try {
theDate = dateFormat.parse(date.toString());
System.out.println("Date parsed = " + dateFormat.format(theDate));
} catch (ParseException e) {
e.printStackTrace();
}
return dateFormat.format(theDate);
}
但它引发了以下异常:
java.text.ParseException:无法解析的日期:“2012年6月18日星期一00:00:00 IST”
我希望下面的程序能够解决您的问题
String dateStr = "Mon Jun 18 00:00:00 IST 2012";
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
Date date = (Date)formatter.parse(dateStr);
System.out.println(date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
String formatedDate = cal.get(Calendar.DATE) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.YEAR);
System.out.println("formatedDate : " + formatedDate);
只需要添加:新的SimpleDataFormat(“bla-bla-bla”,Locale.US)
您还可以使用excel中的公式将此类日期转换为excel可以读取的日期类型:
=DATEVALUE(连接(中间(A1,8,3)、中间(A1,4,4)、右边(A1,4))
您将获得:12/7/2016
发件人:Wed Dec 07 00:00:00 UTC 2016
java.time
现代的教学方法是以课堂为中心的。它们取代了麻烦的旧式日期时间类,如日期
、日历
、和简化格式
解析为ZoneDateTime
String input = "Mon Jun 18 00:00:00 IST 2012";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" )
.withLocale( Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
提取一个仅限日期的对象,即LocalDate
,该对象不包含任何时间和时区
LocalDate ld = zdt.toLocalDate();
DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
String output = ld.format( fLocalDate) ;
转储到控制台
System.out.println( "input: " + input );
System.out.println( "zdt: " + zdt );
System.out.println( "ld: " + ld );
System.out.println( "output: " + output );
输入:2012年6月18日星期一00:00:00 IST
zdt:2012-06-18T00:00+03:00[亚洲/耶路撒冷]
劳工处:2012-06-18
产出:18/06/2012
看这个
格式选择不当
您的格式对于数据交换来说是一个糟糕的选择:人类难以阅读,计算机难以解析,使用非标准的3-4个字母的区号,并且假设为英语
尽可能使用标准格式。默认情况下,java.time类在解析/生成日期时间值时使用格式
以大陆/地区
的格式指定,例如,或太平洋/奥克兰
。切勿使用3-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)。例如,您使用的IST
可能是爱尔兰标准时间、以色列标准时间(如上所示,由java.Time解释)或印度标准时间
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。请参阅本节的相关部分page@Kazekage你现在可以看到我的编辑了,希望你知道答案。同意托尼的观点,如果不让其他人回答,你可以尝试回答,而不是投票给伟大的评论。可能重复@SAR相同的问题,请帮助我。我认为dateStr示例的格式应该是:SimpleDateFormat(“EEE MMM dd HH:mm:ss z yyyy”)谢谢,它帮助我:)代码工作正常,但应该是z而不是z。@Pascal我使用相同的格式,但不能使用
(“EEE-MMM-dd-HH:mm:ss-z-yyyy”)
这如何增加价值?这个问题是关于Java编程,而不是Microsoft Excel电子表格。
System.out.println( "input: " + input );
System.out.println( "zdt: " + zdt );
System.out.println( "ld: " + ld );
System.out.println( "output: " + output );