有谁知道,如何获得一年四季的开始和结束日期? 基本上我需要当前季度和接下来的3个季度的开始和结束日期。
我有一个下拉列表,它的日期应该动态填充,如下所示:
<select name="quarter-selection">
<option value="2012-07-01,2012-09-31">Q3 2012</option>
<option value="2012-10-01,2012-12-31">Q4 2012</option>
<option value="2013-01-01,2013-03-31">Q1 2013</option>
<option value="2013-04-01,2013-06-30">Q2 2013</option>
</select>
任何帮助高度赞赏。 谢谢, 弗洛里安
答案 0 :(得分:3)
你可以轻松搞定:
$q1 = array(
'start' => date('Y-m-d', mktime(0, 0, 0, 1, 1, 2012)),
'end' => date('Y-m-d', mktime(0, 0, 0, 3, date('t', mktime(0, 0, 0, 3, 1, 2012)), 2012))
);
$q2 = array(
'start' => date('Y-m-d', mktime(0, 0, 0, 4, 1, 2012)),
'end' => date('Y-m-d', mktime(0, 0, 0, 6, date('t', mktime(0, 0, 0, 3, 1, 2012)), 2012))
);
$q3 = array(
'start' => date('Y-m-d', mktime(0, 0, 0, 7, 1, 2012)),
'end' => date('Y-m-d', mktime(0, 0, 0, 9, date('t', mktime(0, 0, 0, 3, 1, 2012)), 2012]))
);
$q4 = array(
'start' => date('Y-m-d', mktime(0, 0, 0, 10, 1, 2012)),
'end' => date('Y-m-d', mktime(0, 0, 0, 12, date('t', mktime(0, 0, 0, 3, 1, 2012)), 2012))
);
答案 1 :(得分:0)
与最早版本的Java捆绑在一起的麻烦的旧日期时间类现在已被java.time类所取代。
ThreeTen-Extra项目使用其他功能扩展了java.time类。这包括Quarter
和YearQuarter
类。
YearQuarter
确定季度意味着确定日期。确定日期意味着指定时区。对于任何特定时刻,日期在全球范围内按区域变化。
ZoneId z = ZoneId.of( "America/Montreal" );
YearQuarter yq = YearQuarter.now( z );
你可以做数学,加法和减法。
YearQuarter yqNext = yq.plusQuarters( 1 );
LocalDate
您可以查询该季度的第一个和最后一个日期,以获取LocalDate
个对象。 LocalDate
类表示没有时间且没有时区的仅限日期的值。
LocalDate firstDay = yq.atDay( 1 );
LocalDate lastDay = yq.atEndOfQuarter();
要生成表示标准ISO 8601格式(YYYY-MM-DD)的LocalDate
值的字符串,只需调用toString
。
String output = firstDay.toString();
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date
,.Calendar
和&amp; java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。