标签: dateinterval

使用DatePeriod和DateInterval在一段时间内获取某些工作日

我需要在一段时间内获得某些工作日.平日可以只有一个或多个,例如仅在所有星期一或所有星期一,星期二和星期三.

我想将DatePeriodDateInterval :: createFromDateString一起使用

DateInterval :: createFromDateString接受相对格式.

如何将一个或多个工作日作为相对格式传递到DateInterval :: createFromDateString.这有可能吗?

在相对格式中,我找不到可以做到的"每个"格式

$i = DateInterval::createFromDateString('every Monday');
Run Code Online (Sandbox Code Playgroud)

php datetime dateinterval

2
推荐指数
1
解决办法
2097
查看次数

Is there a name for date/time interval format like "1h10m"

即使在软件之外,以截断的方式传达时间或日期间隔也是很平常的事。例如:1h10m转换为“一小时十分钟”。

这可以抽象为一组规则。例如:一个日期间隔被表示为的组合_h_m(等),其中_的符号代表非负整数或浮点数,其被概括成一个日期间隔对象。

允许混合天,小时,分钟。例如,0.5d1h60m将是的同义词14h

是否有类似的地方定义了这样的标准?

datetime duration date dateinterval

2
推荐指数
1
解决办法
875
查看次数

在PHP中按间隔拆分开始和结束日期

是否有任何功能可以将开始日期和结束日期分成$interval几天(或几个月)?例如:

$interval = new DateInterval('P10D');
$start    = new DateTime('2012-01-10');
$end      = new DateTime('2012-02-16');

$chunks = splitOnInterval($start, $end, $interval);

// Now chunks should contain
//$chunks[0] = '2012-01-10'
//$chunks[1] = '2012-01-20'
//$chunks[2] = '2012-01-30'
//$chunks[3] = '2012-02-09'
//$chunks[3] = '2012-02-16'
Run Code Online (Sandbox Code Playgroud)

我认为DatePeriod可以提供帮助,但我没有找到任何关于如何使用它的方法。

php datetime dateinterval

1
推荐指数
1
解决办法
4899
查看次数

PHP回显DateTime对象

当我尝试输出DateTime对象时,它实际上是打印格式,例如

Y-m-d H:i:s
Run Code Online (Sandbox Code Playgroud)

$db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');
$dbTime = new DateTime(current($db->query('SELECT NOW()')->fetchAll(PDO::FETCH_COLUMN, 0)));
$myTime = new DateTime();
$diff = $myTime->diff($dbTime);
echo $diff->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

从阅读其他问题和例子,这应该工作,所以我很困惑,为什么它不是.

php datetime dateinterval

1
推荐指数
1
解决办法
94
查看次数

将DateTime间隔拆分为单日

我有一个PHP脚本,它从数据库接收一组事件,其中包含开始/结束日期时间,表示工作时间.

Begin               | End
2013-08-14 10:00:00 | 2013-08-22 09:30:00
2013-08-08 07:00:00 | 2013-08-08 15:00:00
2013-08-09 07:00:00 | 2013-08-10 07:00:00
Run Code Online (Sandbox Code Playgroud)

现在我想计算每一天的工作量.对于第一行,我想要一个像这样的输出:

Begin               | End
2013-08-14 10:00:00 | 2013-08-14 23:59:59
2013-08-15 00:00:00 | 2013-08-15 23:59:59
2013-08-16 00:00:00 | 2013-08-16 23:59:59
....
2013-08-22 00:00:00 | 2013-08-22 09:30:00
Run Code Online (Sandbox Code Playgroud)

我已经看到了DatePeriod和DateInterval的一些东西,但那些没有花时间考虑.

谢谢你的帮助.

php date-format dateinterval

1
推荐指数
1
解决办法
1281
查看次数

用巨大的秒值格式化 DateInterval

最近遇到一个简单的DateInterval问题。在我创建DateInterval具有巨大秒值的对象后,该类不会重新计算其属性,如下所示:

$interval = new DateInterval('PT6685071S');
echo $interval->format("%m months %d days %H hours %i minutes %s seconds");
Run Code Online (Sandbox Code Playgroud)

输出变为:

0 月 0 天 00 小时 0 分 6685071 秒

如何使它显示为:

2个月16天8小时57分51秒

没有将秒除以 60、分钟除以 60 等?

(希望我的计算是正确的)

php dateinterval

1
推荐指数
1
解决办法
743
查看次数

如何从 PHP 日期间隔中检索天数?

我正在尝试检索 PHP 间隔的天数。当我在http://sandbox.onlinephpfunctions.com/上运行以下代码时:

$duration = new \DateInterval('P1Y');
echo $duration->format('%a');
echo "Done";
Run Code Online (Sandbox Code Playgroud)

我得到:

(unknown)Done
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

php dateinterval

1
推荐指数
2
解决办法
1万
查看次数

python中日期范围之间的月份开始日期和结束日期

输入是一个日期范围,我们需要找到该区间内所有日期的月份开始日期和月份结束日期。下面给出了示例

输入:

  start date: 2018-6-15
  end date: 2019-3-20
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[ 
  ["month starting date","month ending date"],
  ["2018-6-15","2018-6-30"],
  ["2018-7-1","2018-7-31"],
  ["2018-8-1","2018-8-31"],
  ["2018-9-1","2018-9-30"],
  ["2018-10-1","2018-10-31"],
  ["2018-11-1","2018-11-30"],
  ["2018-12-1","2018-12-31"],
  ["2019-1-1","2019-1-31"],
  ["2019-2-1","2019-2-28"],
  ["2019-3-1","2019-3-20"]
]
Run Code Online (Sandbox Code Playgroud)

datetime date monthcalendar python-3.x dateinterval

1
推荐指数
1
解决办法
4537
查看次数

如何在两个日期之间获得周数

如何在几周内获得可靠的日期差异?

到目前为止我已经有了

<?php
$a = new DateTime('2010-09-01');
$b = new DateTime();

$c = $a->diff($b);
Run Code Online (Sandbox Code Playgroud)

现在我得到一个带有年,月等的DateInterval,但据我所知,一年不会有52周,所以一个月也不会有4周.

有关如何获得真实,可靠的周数的任何建议吗?

php datetime datediff dateinterval

0
推荐指数
1
解决办法
2776
查看次数

PHP DateInterval格式分钟和秒,前导零

试图从秒开始生成简单的"H:i:s"字符串,但不能

例:

$iSecond = 188;
$dtF = new DateTime("@0");
$dtT = new DateTime("@$iSecond");
$size = $dtF->diff($dtT)->format('%H:%i:%s');
echo $size;
Run Code Online (Sandbox Code Playgroud)

应该显示"00:03:08",但事实上"00:3:8"

如果格式方法中还有其他日期格式选项?

有小提琴https://3v4l.org/Coi7q

php datetime dateinterval

0
推荐指数
1
解决办法
1046
查看次数

PHP-使用DateInterval添加和减去Days奇怪的错误

我正在尝试使用date_add和在日期中加上和减去#天date_sub,但是得到一些奇怪的结果。我认为这是一个简单的答案,我对PHP并不了解,所以不知道为什么。

这是我的代码:

$y = new DateTime('2016-05-17');
$z2 = 7;
$tempy = $y;
$tempy->sub(new DateInterval('P' . $z2 . 'D'));
$startdate = date_format($tempy, "Y-m-d");
$y->add(new DateInterval('P' . $z2 . 'D'));
$enddate = date_format($y, "Y-m-d");
echo "Start: " . $startdate . "  End: " . $enddate . "\r\n";
Run Code Online (Sandbox Code Playgroud)

结果如下:

Start: 2016-05-10 End: 2016-05-17

看起来,即使我使用一个临时变量$tempy作为开始日期,它仍然会对其进行修改,并且结束日期已关闭。

编辑:预期结果:

Start: 2016-05-10 End: 2016-05-24

php datetime dateinterval

0
推荐指数
1
解决办法
465
查看次数

如何使用Postgres只返回一个语句,在两列之间返回一系列日期?

我有下表:

create_table "activities", force: :cascade do |t|
  ...
  t.date     "start_date",                                                  null: false
  t.time     "start_time",                                                  null: false
  t.date     "end_date",                                                    null: false
  t.time     "end_time",                                                    null: false
  ...
end
Run Code Online (Sandbox Code Playgroud)

此表可以包含start_date等于end_date和其他活动的活动,这些活动以不同的日期结束start_date.

我要做的是构建一个SQL查询,它将返回两个日期之间有一些活动的所有日期.

例如:

  • Activity 1: start_date: 2015-04-15, end_date: 2015-04-15
  • Activity 2: start_date: 2015-04-16, end_date: 2015-04-18

该查询将接受两个参数:start_dateend_date,例如:

  • start_date: 2015-04-01
  • end_date: 2015-04-30

执行将返回这两个日期之间活动的所有日期.在上面的例子中,结果将是:

  • 2015年4月15日
  • 2015年4月16日
  • 2015年4月17日
  • 2015年4月18日

该应用程序使用Ruby on Rails编写,数据库使用Postgres.这可以使用Ruby代码解决,但我不希望出于性能原因这样做.

如何在Postgres中只使用一个SQL语句来实现此查询?我认为generate_seriesPostgres功能可以帮助解决这个问题,但是如何解决?

sql postgresql activerecord dateinterval generate-series

-1
推荐指数
1
解决办法
694
查看次数

PHP中两个DateTime之间的分钟数

我试图获取PHP中两个DateTimes之间的分钟数:

$time = new DateTime($dateString);
$now = new DateTime;
$diff = $time->diff($now);

echo $diff->format('%m');
Run Code Online (Sandbox Code Playgroud)

结果始终为0,尽管DateTimes相隔几个小时.我怎么能以正确的方式做到这一点?

php datetime date-math dateinterval

-2
推荐指数
1
解决办法
108
查看次数