Tag: 日期

java SimpleDateFormat

在Java中,如何解析包含不代表模式的字母的日期字符串? “2007-11-02T14:46:03 + 01:00” String date =“2007-11-02T14:46:03 + 01:00”; String format =“yyyy-MM-ddTHH:mm:ssz”; new SimpleDateFormat(格式).parse(日期); 线程“main”中的exceptionjava.lang.IllegalArgumentException:非法模式字符’T’ at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769) at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576) at java.text.SimpleDateFormat。(SimpleDateFormat.java:501) at java.text.SimpleDateFormat。(SimpleDateFormat.java:476)

用Java解析YYYYMMdd日期的最快方法

在解析YYYYMMdd日期时,例如2012年4月5日的20120405,最快的方法是什么? int year = Integer.parseInt(dateString.substring(0, 4)); int month = Integer.parseInt(dateString.substring(4, 6)); int day = Integer.parseInt(dateString.substring(6)); 与 int date = Integer.parseInt(dateString) year = date / 10000; month = (date % 10000) / 100; day = date % 100; 月份的mod 10000是因为mod 10000导致MMdd而结果/ 100是MM 在第一个例子中,我们做3个String操作,3个“解析为int”,在第二个例子中,我们通过modulo做很多事情。 什么更快? 有更快的方法吗?

Java中日期的加法和减法

我们如何在java中添加或减去日期? 例如java.sql.Date并且格式如下: yyyy-MM-dd ,我怎么能从中添加5个月? 我在一些教程中看到他们正在使用Calendar ,我们可以在它上面设置日期吗? 请帮忙。 示例: 2012-01-01添加5个月后将成为2012-06-01 。 PS:我是一名.Net程序员,慢慢学习Java环境。

将Date对象与Java中的TimeStamp进行比较

当我测试这段代码时: java.util.Date date = new java.util.Date(); java.util.Date stamp = new java.sql.Timestamp(date.getTime()); assertTrue(date.equals(stamp)); assertTrue(date.compareTo(stamp) == 0); assertTrue(stamp.compareTo(date) == 0); assertTrue(stamp.equals(date)); 我期待一个真实,真实,真实,虚假。 因为这: 在java.sql.Timestamp的javadoc中,它指出: 注意:此类型是java.util.Date和单独的纳秒值的组合。 只有整数秒存储在java.util.Date组件中。 分数秒 – 纳米 – 是分开的。 传递类型为java.util.Date的值时,Timestamp.equals(Object)方法永远不会返回true,因为日期的nanos组件未知。 因此,Timestamp.equals(Object)方法与java.util.Date.equals(Object)方法不对称。 此外,哈希码方法使用底层的java.util.Date实现,因此在其计算中不包括nanos。 由于Timestamp类和上面提到的java.util.Date类之间存在差异,因此建议代码不要将Timestamp值一般视为java.util.Date的实例。 Timestamp和java.util.Date之间的inheritance关系实际上表示实现inheritance,而不是类型inheritance。 但相反,我会得到一个真实的,虚假的,真实的,虚假的。 有任何想法吗? 编辑:当我用equals方法检查两个日期时出现此问题,但其中一个Date对象来自Hibernate类并且调试我看到该对象包含TimeStamp。 所以equals方法评估为false,然后我发现了这个: http : //mattfleming.com/node/141 但是当我尝试代码时,我会得到不同的结果……如果我不能同时使用equals和compareTo,我应该用什么来检查2个日期是否相同?!?!

使用Joda时间比较两个日期

我想比较两个日期,但是我遇到了麻烦。 1日期是从java.util.date对象创建的,另一个是手动制作的。 以下代码是一个示例: Date ds = new Date(); DateTime d = new DateTime(ds); DateTime e = new DateTime(2012,12,07, 0, 0); System.out.println(d.isEqual(e)); 然而,测试结果是false 。 我猜这是因为时间。 如何检查这两个日期是否相等(我的意思是年,月,日期是相同的)?

将Java字符串转换为时间,而不是日期

我想将变量字符串转换为Time类型变量,而不是使用Java的Date。 字符串看起来像这样17:40 我尝试使用下面的代码但这个实例是一个日期类型变量而不是时间 String fajr_prayertime = prayerTimes.get(0); DateFormat formatter = new SimpleDateFormat(“HH:mm”); fajr_begins = (Date)formatter.parse(fajr_prayertime); System.out.println(” fajr time ” + fajr_begins); 但Netbean抱怨我应该插入一个例外,如下所示; DateFormat formatter = new SimpleDateFormat(“HH:mm”); try { fajr_begins = (Date)formatter.parse(fajr_prayertime); } catch (ParseException ex) { Logger.getLogger(JavaFXApplication4.class.getName()).log(Level.SEVERE, null, ex); } System.out.println(” fajr time ” + fajr_begins); 知道如何从上面的字符串中获取时间。

在java中以格式获取日期类型对象

我们知道我们可以使用Java.util.Date或Calender实例或使用GregorianCalendar实例获取日期。 使用类’ SimpleDateFormat ‘,我们可以parse()或format()函数我们的Date或String 。 我们知道使用parse()或format()函数,我们只能将输出作为String 。 在java中是否有任何选项可以获取特定格式的Date实例,如’yyyy-MM-dd’或任何其他格式,但最终输出应该是具有此格式的Date类型?

Java将UTC时间戳转换为本地DateTime

我知道有很多关于将UTC时间/日期转换为当地时间的回复post,但没有帮助我弄清楚我的问题是什么。 我的问题是:通过UTC时间戳,我如何获得本地DateTime? 这就是我现在所拥有的,但这只是将时间戳转换为DateTime格式。 SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); sdf.setTimeZone(TimeZone.getDefault()); sdf.format(new Date(timestamp * 1000)); 编辑:我在云上保存UTC时间戳,以便每个设备(Android / iOS)都可以查询并转换为它的时区。

Joda Time bug还是我的错误? (Java Joda时间日期为字符串解析)

所以我在解析日期时遇到问题,使用JodaTime年表IslamicChronology年代IslamicChronology所以写了一个小例子来certificate我的问题。 这是代码: import org.joda.time.Chronology; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormat; import org.joda.time.chrono.IslamicChronology; import java.util.Date; /** * Test */ public class Test { public static void main(String[] args) { Date now = new Date(); String format = “dd MMM yyyy”; Chronology calendarSystem = IslamicChronology.getInstance(); DateTimeFormatter formatter = DateTimeFormat.forPattern(format).withChronology(calendarSystem); String nowAsString = formatter.print(now.getTime()); System.out.println(“nowAsString = ” + nowAsString); long […]

以MM / DD / YY格式解析日期并将其调整到当前/上个世纪的最佳方法是什么?

我们的一位客户希望能够输入年份组件只有2位数的日期。 该日期将在过去,因此如果2位数年份在当前年份之后,我们希望它在上个世纪有效,但如果2位数年份等于或小于当前年份,则工作在本世纪。 截至今天10/30/2008 01/01/01 = 01/01/2001 01/01/09 = 01/01/1909 这是一个奇怪的要求,我解决了这个问题,我只是不喜欢我的解决方案。 感觉有更好的方法来做到这一点。 谢谢您的帮助。 public static String stupidDate(String dateString) { String twoDigitYear = StringUtils.right(dateString, 2); String newDate = StringUtils.left(dateString, dateString.length() – 2); int year = NumberUtils.toInt(twoDigitYear); Calendar c = GregorianCalendar.getInstance(); int centuryInt = c.get(Calendar.YEAR) – year; newDate = newDate + StringUtils.left(Integer.toString(centuryInt), 2) + twoDigitYear; return newDate; }