我在Java中遇到以下问题(我看到有些人在JavaScript中遇到类似问题,但我使用的是Java)
System.out.println(new Date().getYear());
System.out.println(new GregorianCalendar().getTime().getYear());
System.out.println(this.sale.getSaleDate().getYear());
System.out.println(this.sale.getSaleDate().getMonth());
System.out.println(this.sale.getSaleDate().getDate());
Run Code Online (Sandbox Code Playgroud)
回报
I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 112
I/System.out( 4274): 1
I/System.out( 4274): 11
Run Code Online (Sandbox Code Playgroud)
我不明白我认为2012年的112位.发生了什么事?是
java.util.Date类不可用?我将其作为一个字段存储在我的几个类中以存储日期和时间.我该怎么办?
鉴于今天的时间,例如下午2:24,如何让它到下午2:30?
同样,如果时间是下午2:17,我如何让它到下午2:15?
我想在执行更多计算之前简单地将TimeZone信息添加回LocalDate.LocalDate来自使用ObjectLab LocalDateCalculator为现有DateTime添加天数,但该方法需要返回一个修改后的ReadableInstant以形成一个Interval,然后我可以检查它.
我正在尝试的代码相当于将Joda LocalDate转换为Joda DateTime:
LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate();
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone);
Run Code Online (Sandbox Code Playgroud)
我得到的错误来自Joda的转换系统:
java.lang.IllegalArgumentException: No instant converter found for type: org.joda.time.LocalDate
at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:147)
at org.joda.time.DateTime.<init>(DateTime.java:192)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个解决此问题的方法,或者一种解决方法,可以获得具有完整时区信息的准确间隔.
我需要以[+/-] hh:mm格式保存手机的时区
我正在使用TimeZone类来处理这个问题,但我能得到的唯一格式如下:
PST -05:00
GMT +02:00
Run Code Online (Sandbox Code Playgroud)
我宁愿不对结果进行子串,是否有任何键或选项标志我可以设置为只获取值而不是该时区的名称(GMT/CET/PST ...)?
我想根据用户区域设置显示出生日期.在我的应用程序中,我的一个字段是出生日期,目前是格式dd/mm/yyyy.因此,如果用户更改其区域设置,则日期格式也应相应更改.任何指针或代码示例都会帮助我克服这个问题.
我想将某个日期增加1天.我创建一个Calendar对象,如:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 31);
Run Code Online (Sandbox Code Playgroud)
然后,为了增加它1天,我可以做两件事:
cal.add(Calendar.DAY_OF_MONTH, 1);
Run Code Online (Sandbox Code Playgroud)
要么
cal.add(Calendar.DAY_OF_YEAR, 1);
Run Code Online (Sandbox Code Playgroud)
还有其他"DAY"常量,但是我使用上述两种增加1的方法得到相同的结果.在这种情况下,我会得到两个不同的结果吗?
我的应用程序托管在伦敦服务器中.我在西班牙马德里.所以时区是-2小时.
如何获取我的时区的当前日期/时间.
Date curr_date = new Date(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
例如
Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));
Run Code Online (Sandbox Code Playgroud)
DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");
DateTime dt = new DateTime(zone);
int day = dt.getDayOfMonth();
int year = dt.getYear();
int month = dt.getMonthOfYear();
int hours = dt.getHourOfDay();
int minutes = dt.getMinuteOfHour();
Run Code Online (Sandbox Code Playgroud) 我需要将当前日期添加到JDBC调用的预准备语句中.我需要以类似的格式添加日期yyyy/MM/dd.
我试过了
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = new Date();
pstm.setDate(6, (java.sql.Date) date);
Run Code Online (Sandbox Code Playgroud)
但我有这个错误:
threw exception
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
Run Code Online (Sandbox Code Playgroud)
有没有办法获得java.sql.Date具有相同格式的对象?
有人可以告诉我,以下两个陈述之间的区别是什么:
TimeZone.getTimeZone("America/New_York")
Run Code Online (Sandbox Code Playgroud)
和
TimeZone.getTimeZone("EST")
Run Code Online (Sandbox Code Playgroud)
换句话说,为什么EST与America/New_York不同.同样在我的应用程序中,要获得美国当前时区,我应该使用America/New_York还是EST.