Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中设置日期的最小小时数?_Java - Fatal编程技术网

如何在Java中设置日期的最小小时数?

如何在Java中设置日期的最小小时数?,java,Java,我试图得到上个月第一天的日期和时间;具体地说,现在是一月份,我正试图得到:Sun Dec 01 00:00:00 EST 2013。我正在使用下面的代码片段,在研究这个主题时,我从Stackoverflow上的另一个代码片段中修改了它;此代码段将返回:Sun Dec 01 12:00:00 EST 2013。我不明白为什么设定第一个小时的最短时间实际上会返回正午 Calendar aCalendar = Calendar.getInstance(); // add -1 month to cur

我试图得到上个月第一天的日期和时间;具体地说,现在是一月份,我正试图得到:
Sun Dec 01 00:00:00 EST 2013
。我正在使用下面的代码片段,在研究这个主题时,我从Stackoverflow上的另一个代码片段中修改了它;此代码段将返回:
Sun Dec 01 12:00:00 EST 2013
。我不明白为什么设定第一个小时的最短时间实际上会返回正午

Calendar aCalendar = Calendar.getInstance();
// add -1 month to current month
aCalendar.add(Calendar.MONTH, -1);
// set DATE to 1, so first date of previous month
//aCalendar.set(Calendar.DATE, 1);                        
aCalendar.set(Calendar.DATE, aCalendar.getActualMinimum(Calendar.DAY_OF_MONTH));
aCalendar.set(Calendar.HOUR, aCalendar.getActualMinimum(Calendar.HOUR));
aCalendar.set(Calendar.MINUTE, aCalendar.getActualMinimum(Calendar.MINUTE));
aCalendar.set(Calendar.SECOND, aCalendar.getActualMinimum(Calendar.SECOND));
Date firstDateOfPreviousMonth = aCalendar.getTime();
如果如图所示修改以下行并设置为0,则会得到相同的结果:

aCalendar.set(Calendar.HOUR, 0);
如果我按以下方式修改它,我将得到下午1点:

aCalendar.set(Calendar.HOUR, 0);
结果:
Sun Dec 01 13:00:00 EST 2013

来自Java文档

get和set的小时字段号,指示上午的小时数 或者下午

您需要使用
一天中的小时数

get和set的HOUR_OF_DAY字段编号,指示工作时间 一天

或者相应地设置
AM\u PM

用于get和set的AM\U PM字段编号,指示小时是否为 中午之前或之后

在任何情况下,请花点时间查阅Java文档中的

get和set的小时字段号,指示上午的小时数 或者下午

您需要使用
一天中的小时数

get和set的HOUR_OF_DAY字段编号,指示工作时间 一天

或者相应地设置
AM\u PM

用于get和set的AM\U PM字段编号,指示小时是否为 中午之前或之后


在任何情况下,请花时间参考使用Joda time 2.3的一些示例代码

使用默认时区,我们创建一个now(当前时刻)的
DateTime
实例,返回到上个月(以一种智能的方式,补偿像二月这样的短月份),通过请求“最小值”获取月初,然后获取该月初一天的第一个时刻

org.joda.time.DateTime startOfPreviousMonth = new org.joda.time.DateTime().minusMonths(1).dayOfMonth().withMinimumValue().withTimeAtStartOfDay();
注意方法
和timeatstartofday
以获取一天中的第一个时刻。这一时刻可能是也可能不是当地时间的00:00:00(因为夏令时或其他异常情况)

使用明确的时区(几乎总是更好的做法)

获取字符串

String string = startOfPreviousMonth; // or startOfPreviousMonth.toString();
要转换回java.util.Date实例以便与其他库通信

java.util.Date date = startOfPreviousMonth.toDate();

一些使用Joda Time 2.3的示例代码

使用默认时区,我们创建一个now(当前时刻)的
DateTime
实例,返回到上个月(以一种智能的方式,补偿像二月这样的短月份),通过请求“最小值”获取月初,然后获取该月初一天的第一个时刻

org.joda.time.DateTime startOfPreviousMonth = new org.joda.time.DateTime().minusMonths(1).dayOfMonth().withMinimumValue().withTimeAtStartOfDay();
注意方法
和timeatstartofday
以获取一天中的第一个时刻。这一时刻可能是也可能不是当地时间的00:00:00(因为夏令时或其他异常情况)

使用明确的时区(几乎总是更好的做法)

获取字符串

String string = startOfPreviousMonth; // or startOfPreviousMonth.toString();
要转换回java.util.Date实例以便与其他库通信

java.util.Date date = startOfPreviousMonth.toDate();

据我所知,Joda time比Calendar更容易使用。据我所知,JodaTime功能更强大,对于不熟悉API的人来说,它让人困惑——这并不是不使用它的借口,我只是不会说它“更容易”—IMHO;)据我所知,Joda time比Calendar更容易使用。据我所知,JodaTime功能更强大,对于不熟悉API的人来说,它让人困惑——这并不是不使用它的借口,我只是不会说它“更容易”—IMHO;)以下更改已生效:aCalendar.set(Calendar.AM\u PM,Calendar.AM);aCalendar.set(Calendar.HOUR,aCalendar.getActualMinimum(Calendar.HOUR/u DAY));这是一个很好的更改:p以下更改有效:aCalendar.set(Calendar.AM\u PM,Calendar.AM);aCalendar.set(Calendar.HOUR,aCalendar.getActualMinimum(Calendar.HOUR/u DAY));这是一个很好的改变:P