我在重置Java时遇到了问题.对于给定的日期,我想将小时数设置为00:00:00.
这是我的代码:
/**
* Resets milliseconds, seconds, minutes and hours from the provided date
*
* @param date
* @return
*/
public static Date trim(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)
问题是,有时候是时间12:00:00,有时是时候00:00:00,当我查询数据库中保存的实体07.02.2013 00:00:00和存储的实际实体时间时,12:00:00查询失败.
我知道12:00:00 == 00:00:00!
我正在使用AppEngine.这是一个appengine bug,问题还是其他一些问题?或者它取决于其他东西?
我有一个小时,分钟,日期和毫秒时间戳,我正在尝试创建一个表示时间的Date对象.时间戳在东部夏令时提供.
在剖析问题时,我创建了一些简单的测试代码来查看发生的情况,并观察了以下内容:
Date today = new Date();
int hour = 4, min = 0, sec = 0, ms = 64;
boolean print = true;
Calendar cal = GregorianCalendar.getInstance();
if(print)
System.out.println("After initializing, time is: "+cal.getTime());
cal.clear();
if(print)
System.out.println("After clearing, time is: "+cal.getTime());
cal.setTime(today);
if(print)
System.out.println("After setting date, time is: "+cal.getTime());
cal.set(Calendar.HOUR_OF_DAY,hour);
if(print)
System.out.println("After setting hour, time is: "+cal.getTime());
cal.set(Calendar.MINUTE,min);
if(print)
System.out.println("After setting minute, time is: "+cal.getTime());
cal.set(Calendar.SECOND,sec);
if(print)
System.out.println("After setting second, time is: "+cal.getTime());
cal.set(Calendar.MILLISECOND,ms);
if(print)
System.out.println("After setting milliseconds, time is: …Run Code Online (Sandbox Code Playgroud) Calendar班里有一个常数叫做:UNDECIMBER.它描述了第13个月.
这个常数有用吗?在维基百科中,它写的是农历.但是这种日历没有实施.
是否存在第14个月的任何解决方案(Duodecimber)?
我在网上找不到这么多,我想更多地了解这个话题.
作为输入,我有一个字符串,它是 ISO 8601 中的字符串,用于表示日期。例如:
“2017-04-04T09:00:00-08:00”
String的最后一部分“-08:00”表示时区偏移。我将此字符串转换为Calendar实例,如下所示:
Calendar calendar = GregorianCalendar.getInstance();
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US).parse(iso8601Date);
calendar.setTime(date);
Run Code Online (Sandbox Code Playgroud)
iso8601日期为“2017-04-04T09:00:00-08:00”
但这不会选择时区,如果我从Calendar实例获取时区,它会给出笔记本电脑当前设置的实例,并且不会从 ISO 8601 字符串中获取时间戳。我通过日历实例检查时区:
calendar.getTimeZone().getDisplayName()
Run Code Online (Sandbox Code Playgroud)
有人可以展示如何在Calendar实例中选择时区吗?
我正在尝试在HackerRank上完成名为Java Date and Time的任务.
任务
你有一个约会.您只需要编写getDay方法,该方法返回该日期的日期.例如,如果您在2017年8月14日获得日期,则该方法应该返回MONDAY作为该日期的日期.
我尽力完成任务,但我得到了null结果或NullPointerException错误.我想知道我哪里做错了.以下是我的代码:
提前致谢!
我的代码:
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String month = in.next();
String day = in.next();
String year = in.next();
System.out.println(getDay(day, month, year));
}
public static String getDay(String day, String month, String year) {
Calendar cal = Calendar.getInstance();
cal.set(Integer.valueOf(year), (Integer.valueOf(month) - 1), Integer.valueOf(day));
return cal.getDisplayName(cal.get(Calendar.DAY_OF_WEEK), Calendar.LONG, Locale.getDefault());
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在从项目中放弃java.util Date实现的所有用法,并希望将所有内容从java.time包更改为Classes 。
现在,我发现了对象的roll方法的用法,java.util.Calendar我想知道如何将该对象更改为某种东西java.time package。
我检查了java.time的日期类是否具有roll方法,但是找不到任何方法。
ZonedDateTime.now().roll(); // method does not exist
LocalDateTime.now().roll(); // method does not exist
LocalDate.now().roll(); // method does not exist
Run Code Online (Sandbox Code Playgroud)
我正在从java.time包中寻找与该类的roll方法相同的东西java.util.Calendar。
有人已经问过一个类似的问题:java.time中的Calendar.roll等效于什么?但是我发现接受的答案并不令人满意。它不会回答java.time中是否有类似于roll的内容。
我试图通过以下代码了解行为.我当地的时区是UTC -7(亚利桑那州).
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MINUTE,40);
cal.set(Calendar.AM_PM,Calendar.PM);
System.out.println("1 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("1 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("1 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.set(Calendar.HOUR,12);
System.out.println("2 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("2 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("2 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.setTimeZone(TimeZone.getTimeZone("America/New_York")); //set time zone to UTC -4
System.out.println("3 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("3 UTC -4 Day:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("3 UTC -7 Time Stamp:" + cal.getTime().toString());
cal.set(Calendar.HOUR,12);
System.out.println("4 UTC -4 Hour:" + cal.get(Calendar.HOUR_OF_DAY)); …Run Code Online (Sandbox Code Playgroud) 在这里,我希望显示日期
2013-01-01,
2013-01-02,
2013-01-03,
.
.
...etc
Run Code Online (Sandbox Code Playgroud)
我可以在一个月内得到总天数
private int getDaysInMonth(int month, int year) {
Calendar cal = Calendar.getInstance(); // or pick another time zone if necessary
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1); // 1st day of month
cal.set(Calendar.YEAR, year);
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
Date startDate = cal.getTime();
int nextMonth = (month == Calendar.DECEMBER) ? Calendar.JANUARY : month + 1;
cal.set(Calendar.MONTH, nextMonth);
if (month == Calendar.DECEMBER) {
cal.set(Calendar.YEAR, year + 1);
}
Date endDate = cal.getTime();
// get the number of days …Run Code Online (Sandbox Code Playgroud) 经过大量调试后,我将问题范围缩小到以下代码段:
public static void calendarBug() {
for (int i=0 ; i<6 ; i++) {
Calendar c = Calendar.getInstance();
c.clear();
c.set(2015, 2, 27, i, 0);
System.out.println(c.getTime());
}
}
Run Code Online (Sandbox Code Playgroud)
运行此命令会提供以下输出:
Fri Mar 27 00:00:00 IST 2015
Fri Mar 27 01:00:00 IST 2015
Fri Mar 27 03:00:00 IDT 2015
Fri Mar 27 03:00:00 IDT 2015
Fri Mar 27 04:00:00 IDT 2015
Fri Mar 27 05:00:00 IDT 2015
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么c.set(2015,2,27,2,0)返回3AM而不是2AM?
我正在编写一种方法,可以将日期提前给定的周数。这是我的代码:
public class Date {
int year;
int month;
int day;
public Date (int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
}
public void addWeeks (int weeks){
int week = weeks * 7;
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, this.day);
calendar.set(Calendar.MONTH, this.month);
calendar.set(Calendar.YEAR, this.year);
calendar.add(Calendar.DAY_OF_MONTH, week);
System.out.println();
System.out.println("Date after adding " + weeks + " weeks is: " + dateFormat.format(calendar.getTime()));
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我将今天的日期传递给年、月和日。(03/08/2019) 然后调用 addWeeks(1) 例如,那么日期应该提前为 (03/15/2019) 但它给了我 (04/15/2019)。由于某种原因,月份总是比我输入的月份多 1。如果我输入月份 …