Tag: datetime

强制SimpleDateFormat解析整个字符串

我有一个日期字符串,格式如下: “dd/MM/yyyy HH:mm:ss” 。 我想从它创建一个Date对象,我正在使用SimpleDateFormat类。 我们的应用程序接受存储在String数组中的许多不同日期格式。 我们所做的是遍历该数组,将applyPattern用于我们的SimpleDateFormat对象并尝试parse给定的日期字符串。 如果它抛出exception,我们在数组中尝试下一个日期格式等。 但是我发现SimpleDateFormat类的parse方法不一定会尝试解析整个字符串。 如果它从字符串的某些部分成功创建了Date对象,那么它将返回它。 这里的问题是我们给定的日期字符串包含日期和时间数据,但是在我们的第一次parse尝试中, SimpleDateFormat使用更简单的模式: “dd/MM/yyyy” 。 并且因为在解析过程中它在给定的日期字符串中找到匹配日期,所以它在那里停止并创建一个没有时间信息的Date对象。 有没有办法强制SimpleDateFormat解析它给出的整个字符串? String dateString = “01/01/2015 05:30:00”; Date date = null; for (String format : Constants.DATE_FORMATS) {//String Array that contains many date format strings. try { simpleDateFormat.applyPattern(format);//First format applied is “dd/MM/yyyy”. date = simpleDateFormat.parse(dateString); //No exception thrown it accepts the “dd/MM/yyyy” […]

SimpleDateFormat解析日期在某些Android设备上有所不同

我正在解析日期: public class Consts{ public static final SimpleDateFormat DATE_FORMATTER_WITHOUT_TIME_ZONE = new SimpleDateFormat( “yyyy-MM-dd HH:mm”); public static final SimpleDateFormat DATE_FORMATTER_2 = new SimpleDateFormat( “MM-dd-yyyy HH:mm:ss ZZZZ”); } cDate = new GregorianCalendar(); sDate = new GregorianCalendar(); eDate = new GregorianCalendar(); if (mStartTimeTV.getText().toString().equals(“Now”)) { sDate.setTime(cDate.getTime()); } else { sDate.setTime(Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE .parse(mStartTimeTV.getText().toString())); } if (!mEndTimeTV.getText().toString().equals(“”)) { eDate.setTime(Consts.DATE_FORMATTER_WITHOUT_TIME_ZONE .parse(mEndTimeTV.getText().toString())); } else […]

在基于Date字段从MongoDB插入文档时遇到问题

我想插入一个包含Date字段的简单文档,如下所示: “Date” : ISODate(“2015-03-01T00:00:00.000+0000”) 但它将作为另一个日期ISODate(“2015-02-28T18:30:00.000+0000”)插入ISODate(“2015-02-28T18:30:00.000+0000”) 。 这是我的代码: MongoDatabase db = mongoclient.getDatabase(“myDB”); MongoCollection col = db.getCollection(“myCol”); SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSS+SSSS”) ; String oldDate = “2015-03-01T00:00:00.000+0000”; Date date = format.parse(oldDate); Document doc = new Document(); doc.put(“Date” , date); col.insertone(doc) System.out.println(col.find(doc).first());

对于不同的时区,没有时间转换日期

我以UTC格式存储日期并以用户时区显示。 但是,当我试图只在没有时间的情况下存储它时会误导到不同的日期。 例如:2016年6月5日(2016年5月6日)的计划活动。 此日期对于没有时区的所有地区都是唯一的。 如果GMT + 5:30时区的用户试图在05/06/2016添加事件,则ISO-8601格式为2016-05-05T16:00:00.000Z ,毫秒为1462464000000 。 然后来自GMT时区的用户尝试查看此事件。 该日期将是05/05/2016而不是05/06/2016 。 有没有办法在没有任何时区的情况下转换日期。

如何指定在Joda-Time中应该解析哪个世纪的日期

我有一些HR记录,其日期格式为dd/MM/yy ,我使用Joda-Time将它们标准化为dd-MM-yyyy 。 因此,例如,以下记录标准化如下 Input Output 30/01/14 –> 30-01-2014 15/07/99 –> 15-07-1999 24/03/84 –> 24-03-1984 根据各种标准(人类寿命的平均长度,公司一直存在的时间……),我可以假设99可能会参考。 但是,如果我想指定99指1899或其他一年结束于99 ,我该怎么做? 我正在阅读DateTimeFormatter模式的文档,以及这里的解释,看起来CenturyOfEra字段C可能是我想要使用的,但我不会明白我将如何使用它。

Joda DateTime:用字符串中的“CEST”解析日期

我想使用joda库解析DateTime(在scala中,但应该与java相同)。 来源看起来像 val dateParser = DateTimeFormat.forPattern(“yyyy-MM-dd HH:mm:ss z”) val date = dateParser.parseDateTime(“2012-08-28 15:35:00 CEST”) 在Java中,这看起来像 DateTimeFormatter dateParser = DateTimeFormat.forPattern(“yyyy-MM-dd HH:mm:ss z”); DateTime date = dateParser.parseDateTime(“2012-08-28 15:35:00 CEST”); 不幸的是,这不起作用,但抛出exception: java.lang.IllegalArgumentException: Invalid format: “2012-08-28 15:35:00 CEST” is malformed at “CEST” 为什么这不起作用? 当然我可以忽略“CEST”部分并解析剩下的部分,但在输入中“CEST”有时会被“CET”替换,所以我不想忽略它。

os时区更改tomcat需要重启

我的Web应用程序在Apache Tomcat 7.0上运行。 我们调用java util calendar来获取服务器的日期时间。 问题是,如果更改了系统时区,则java日历将继续运行“旧”时区的日期时间。 Tomcat使用的JDK是 – JDk1.6 您能否告诉我们为什么tomcat需要重启以反映新的时区?

从String转换为Date throws无法解析的日期exception

我想将Date转换为String但我遇到了一些问题。 我的代码是这样的: SimpleDateFormat formato = new SimpleDateFormat( “EEE MMM dd HH:mm:ss z yyyy”); String hacer = “Fri Nov 01 10:30:02 PDT 2013”; Date test = null; test = formato.parse( hacer); System.out.println(“prueba===>” + test); 但没有什么是错的,eclipse向我展示了这个错误: Unparseable date: “Fri Nov 01 10:30:02 PDT 2013” at java.text.DateFormat.parse(Unknown Source) 一些帮助?

Java Date对象显示将来的时间

我在当前时间之前的某个时间制作了一个新的约会对象。 如果我在今天前一天显示它,它可以正常工作。 但是如果我想在30天前展示它,它会发展到未来(?) Date date = new Date(); long sometime = 24 * 60 * 60 * 1000; //a day System.out.println(date.getTime() ); Date sometimeago = new Date(date.getTime() – sometime); System.out.println(sometimeago ); sometime = 30* 24 * 60 * 60 * 1000; //a month sometimeago = new Date(date.getTime() – sometime); System.out.println(sometimeago ); 输出: 1408160853776 Thu Aug […]

所有TimeZone时间都保持在哪里?

如果我们为特定Date设置TimeZone ,java如何设置该Date ,例如,如果我们将PST设置为时区,它如何知道确切的时区,它在哪里被维护? 提前致谢