[英]Get start and end dates of years quarters
有谁知道,如何获取一年中各季度的开始和结束日期? 基本上,我需要当前季度和随后三个季度的开始和结束日期。
我有一个下拉菜单,它的日期应动态填充为以下形式:
<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>
任何帮助,高度赞赏。 thx,弗洛里安
您可以通过以下方法轻松获得它:
$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))
);
现在与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
和java.text.SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time。
要了解更多信息,请参见Oracle教程 。 并在Stack Overflow中搜索许多示例和说明。
大部分的java.time功能后移植到Java 6和7 ThreeTen,反向移植 ,并进一步适应的Android在ThreeTenABP (见如何使用...... )。
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如Interval
, YearWeek
, YearQuarter
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.