获取多年的开始和结束日期

时间:2012-08-02 09:52:15

标签: php date

有谁知道,如何获得一年四季的开始和结束日期? 基本上我需要当前季度和接下来的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> 

任何帮助高度赞赏。 谢谢, 弗洛里安

2 个答案:

答案 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.time

与最早版本的Java捆绑在一起的麻烦的旧日期时间类现在已被java.time类所取代。

ThreeTen-EXTRA

ThreeTen-Extra项目使用其他功能扩展了java.time类。这包括QuarterYearQuarter类。

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.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date.Calendar和&amp; java.text.SimpleDateFormat

现在位于Joda-Timemaintenance 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的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter等。