Tag: simpledateformat

使用TimeZone和SimpleDateFormat进行日期解析/格式化会在DST开关周围产生不同的结果

我在谷歌和Stack Overflow上发布了关于TimeZone和SimpleDateFormat的多篇post,但仍然没有得到我做错的事情。 我正在研究一些遗留代码,并且有一个方法parseDate,它会产生错误的结果。 我附上了我试图使用的示例JUnit做调查问题。 第一种方法(testParseStrangeDate_IBM_IBM)使用IBM的实现来格式化parseDate方法的输出。 第二种格式输出与Sun的实现。 使用Sun的SimpleDateFormat可以让我们的时间相差一小时(这可能与Day Light Savings有关)。 将默认TimeZone设置为IBM的实现修复了parseDate方法(只需在setupDefaultTZ方法中取消注释3行)。 我确信这不是一个错误,但我做错了。 @Test public void testParseStrangeDate_IBM_IBM() { setupDefaultTZ(); Calendar date = parseDate(“2010-03-14T02:25:00”); com.ibm.icu.text.SimpleDateFormat dateFormat = new com.ibm.icu.text.SimpleDateFormat( “yyyy-MM-dd HH:mm:ss”); // PASSES: assertEquals(“2010-03-14 02:25:00”, dateFormat.format(date.getTime())); } @Test public void testParseStrangeDate_SUN_SUN() { setupDefaultTZ(); Calendar date = parseDate(“2010-03-14T02:25:00”); java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat( “yyyy-MM-dd HH:mm:ss”); // FAILS: assertEquals(“2010-03-14 02:25:00”, […]

String中的Java Date对象无法正常工作

我遇到了一个我似乎无法解决的顽固问题。 我已经在stackoverflow上寻找解决方案并找到了很多关于Java日期格式的post,但没有具体的问题。 基本上,我有一种情况,我需要将日期字符串转换为java.util.Date对象。 我正在使用Date和SimpleDateFormat类。 对于我遇到的大多数日期,它的工作正常。 但是对于某些日期,它可以工作,但会改变实际日期。 两个示例日期是: 2月24日星期五16:45:40太平洋标准时间 – >更改为 – >星期五06月16日16:45:40太平洋标准时间2012年 2012年1月13日星期三10:00:42 – >更改为 – > Wed Jan 04 09:00:42 PST 2012 知道为什么日期会发生变化吗? 有什么方法可以轻松避免这种情况或以不同的方式做到这一点? 我的代码复制如下。 你可以尝试看看我在说什么。 提前致谢! 您可以使用以下JSP代码尝试此操作: 我得到以下输出: First Test ———— Original:Fri Feb 24 16:45:40 PST 2012: Date Obj:Fri Jan 06 16:45:40 PST 2012: Second Test ———– Original:Wed Jun 13 10:00:42 PDT 2012: […]

使用yyyy-MM-dd hh:mm:ss格式解析日期的意外差异

我运行下面的java代码来获得时差。 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class Test { public static SimpleDateFormat simpleDateFormat= new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); public static Date date1,date2; public static long diff; public static String TAG =”DateConversion”; public static Calendar cal1,cal2; public static void main(String a[]) { checkTimeDifference(“2013-10-30 10:15:00”, “2013-10-30 11:15:00”); checkTimeDifference(“2013-10-30 10:15:00”, “2013-10-30 12:15:00”); checkTimeDifference(“2013-10-30 10:15:00”, “2013-10-30 13:15:00”); […]

如何在Java中将字符串转换为Time对象?

我的字符串值为08:03:10 pm ,我想把它转换成时间 。 我怎么能用Java做到这一点?

使用simpledateformat将Date转换为String

将日期转换为不同格式的字符串时遇到问题。 日期: lastDownloadDate>>Wed Feb 27 16:20:23 IST 2013 lastChangeDate>>Wed Feb 27 15:11:00 IST 2013 我想将此格式转换为另一种格式: yyyy-mm-dd HH:mm:ss 。 当我尝试转换它时,我得到了不同的结果: DateFormat outputFormat = new SimpleDateFormat(“yyyy-mm-dd HH:mm:ss”); String lastDownloadTimeVal = outputFormat.format(lastDownloadDate); System.out.println(“lastDownloadTimeVal>>”+lastDownloadTimeVal); String lastChangeTimeVal = outputFormat.format(lastChangeDate); System.out.println(“lastChangeTimeVal>>”+lastChangeTimeVal); 我得到了错误的结果,月份正在被分钟取代: lastDownloadTimeVal>>2013-20-27 16:20:23 lastChangeTimeVal>>2013-11-27 15:11:00

将Java Date从一种格式转换为另一种格式而不将其转换为字符串

我正在尝试获取当前的系统日期,并将其格式化为Etc / UTC,然后进入此“dd.MM.yyyy HH:mm z”格式。 问题是格式化日期后格式化函数返回一个字符串而不是日期。 这是下面的代码spinet final Date currentDate = new Date(); final SimpleDateFormat dateFormatter = new SimpleDateFormat(“dd.MM.yyyy HH:mm z”); dateFormatter.setTimeZone(TimeZone.getTimeZone(“Etc/UTC”)); String finalDateTime= dateFormatter.format(currentDate); System.out.println(finalDateTime); 是否有任何替代解决方案允许我通过将我保留在此日期对象中来格式化日期,因为我已经在java 8之后和java 8之前研究了每个日期库,看起来如果我想格式化任何类型的日期或日期时间,我必须使用格式化程序将给定日期转换为字符串。 任何替代解决方案或不可能吗?

是否可以获取具有特定格式的java.util.Date对象?

我想问一下java.util.Date的用法。 这是我的示例课程 public class DateConverter { public static void main(String[] args) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“dd/MM/yyyy”); Date today = new Date(); String dateAsString_format = simpleDateFormat.format(today); System.out.println(“Formatted Date String (String datatype): ” + dateAsString_format); Date parsedDate = null; try { parsedDate = simpleDateFormat.parse(dateAsString_format); } catch (ParseException e) { e.printStackTrace(); } System.out.println(“Parse Date (Date datatype): ” […]

Android:错误SimpleDateFormat未知模式字符’u’

我使用java 1.7.25但发现此错误。 我该怎么办? FATAL EXCEPTION: main java.lang.IllegalArgumentException: Unknown pattern character ‘u’ at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:264) at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:319) at java.text.SimpleDateFormat.(SimpleDateFormat.java:365) at java.text.SimpleDateFormat.(SimpleDateFormat.java:249) 这是我的代码 public static int getDayNumberOfWeek(int day, String monthString, int yyyy) { //http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html int dayNumberOfWeek = 1; final String inputFormat = “MMM/dd/yyyy”; final String outputFormat = “u”; String dayString2Digit = DateTimeHelper.getTwoDigit(day); String inputTimeStamp = monthString + “/” […]

Java如何获取给定时区缩写的时区ID列表

是否可以找到给定时区缩写的时区ID列表? 例如,对于缩写IST ,时区ID是Asia/Jerusalem , Asia/Kolkata和Europe/Dublin 。

Java – 无法解析的日期,需要格式匹配“GMT-0400”

我有以下Java: DateFormat formatter = new SimpleDateFormat( “EEE MMM dd yyyy HH:mm:ss zZ (zzzz)”, Locale.ENGLISH); Calendar cal = Calendar.getInstance(); cal.set(2011, Calendar.APRIL, 1); out.println(formatter.format(cal.getTime())); out.println(); Date date; try { date = formatter .parse(“Fri Apr 01 2011 00:00:00 GMT-0400 (Eastern Daylight Time)”); } catch (ParseException e) { out.println(“Failed to parse date: ” + e.getMessage()); e.printStackTrace(out); } 这是在一个servlet中, Calendar […]