php日期类modify作用,PHP DateTime类modify用法说明

测试用例

$dateTimeObj = new DateTime(date('Y-m-d', time())); // 创建DateTime对象

$dateTimeObj->modify('saturday previous week'); // modify到上周六 00:00

可用符号

Description

Format

dayname

‘sunday’ | ‘monday’ | ‘tuesday’ | ‘wednesday’ | ‘thursday’ | ‘friday’ | ‘saturday’ | ‘sun’ | ‘mon’ | ‘tue’ | ‘wed’ | ‘thu’ | ‘fri’ | ‘sat’

daytext

‘weekday’ | ‘weekdays’

number

[+-]?[0-9]+

ordinal

‘first’ | ‘second’ | ‘third’ | ‘fourth’ | ‘fifth’ | ‘sixth’ | ‘seventh’ | ‘eighth’ | ‘ninth’ | ‘tenth’ | ‘eleventh’ | ‘twelfth’ | ‘next’ | ‘last’ | ‘previous’ | ‘this’

reltext

‘next’ | ‘last’ | ‘previous’ | ‘this’

space

[ \t]+

unit

((‘sec’ | ‘second’ | ‘min’ | ‘minute’ | ‘hour’ | ‘day’ | ‘fortnight’ | ‘forthnight’ | ‘month’ | ‘year’) ‘s’?) | ‘weeks’ | daytext

基本用法

Format

Description

Examples

‘yesterday’

Midnight of yesterday

“yesterday 14:00”

‘midnight’

The time is set to 00:00:00

‘today’

The time is set to 00:00:00

‘now’

Now – this is simply ignored

‘noon’

The time is set to 12:00:00

“yesterday noon”

‘tomorrow’

Midnight of tomorrow

‘back of’ hour

15 minutes past the specified hour

“back of 7pm”, “back of 15”

‘front of’ hour

15 minutes before the specified hour

“front of 5am”, “front of 23”

‘first day of’

Sets the day of the first of the current month. This phrase is best used together with a month name following it.

“first day of January 2008”

‘last day of’

Sets the day to the last day of the current month. This phrase is best used together with a month name following it.

“last day of next month”

ordinal spacedaynamespace ‘of’

Calculates the x-th week day of the current month.

“first sat of July 2008”

‘last’ spacedaynamespace ‘of’

Calculates the last week day of the current month.

“last sat of July 2008”

*number**space*? (*unit* | ‘week’)

Handles relative time items where the value is a number.

“+5 weeks”, “12 day”, “-7 weekdays”

ordinal *space**unit*

Handles relative time items where the value is text.

“fifth day”, “second month”

‘ago’

Negates all the values of previously found relative time items.

“2 days ago”, “8 days ago 14:00”, “2 months 5 days ago”, “2 months ago 5 days”, “2 days ago”

dayname

Moves to the next day of this name.

“Monday”

reltext space‘week’

Handles the special format “weekday + last/this/next week”.

“Monday next week”

Note:

Relative statements are always processed after non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent.

Exceptions to this rule are: "yesterday", "midnight", "today", "noon" and "tomorrow". Note that "tomorrow 11:00" and "11:00 tomorrow" are different. Considering today's date of "July 23rd, 2008" the first one produces "2008-07-24 11:00" where as the second one produces "2008-07-24 00:00". The reason for this is that those five statements directly influence the current time.

Note:

Observe the following remarks when the current day-of-week is the same as the day-of-week used in the date/time string. The current day-of-week could have been (re-)calculated by non-relative parts of the date/time string however.

"dayname" does not advance to another day. (Example: "Wed July 23rd, 2008" means "2008-07-23").

"number dayname" does not advance to another day. (Example: "1 wednesday july 23rd, 2008" means "2008-07-23").

"number week dayname" will first add the number of weeks, but does not advance to another day. In this case "number week" and "dayname" are two distinct blocks. (Example: "+1 week wednesday july 23rd, 2008" means "2008-07-30").

"ordinal dayname" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").

"number week ordinal dayname" will first add the number of weeks, and then advances to another day. In this case "number week" and "ordinal dayname" are two distinct blocks. (Example: "+1 week first wednesday july 23rd, 2008" means "2008-08-06").

"ordinal dayname 'of' " does not advance to another day. (Example: "first wednesday of july 23rd, 2008" means "2008-07-02" because the specific phrase with 'of' resets the day-of-month to '1' and the '23rd' is ignored here).

Also observe that the "of" in "ordinal space dayname space 'of' " and "'last' space dayname space 'of' " does something special.

It sets the day-of-month to 1.

"ordinal dayname 'of' " does not advance to another day. (Example: "first tuesday of july 2008" means "2008-07-01").

"ordinal dayname " does advance to another day. (Example: "first tuesday july 2008" means "2008-07-08", see also point 4 in the list above).

"'last' dayname 'of' " takes the last dayname of the current month. (Example: "last wed of july 2008" means "2008-07-30")

"'last' dayname" takes the last dayname from the current day. (Example: "last wed july 2008" means "2008-06-25"; "july 2008" first sets the current date to "2008-07-01" and then "last wed" moves to the previous Wednesday which is "2008-06-25").

Note:

Relative month values are calculated based on the length of months that they pass through. An example would be "+2 month 2011-11-30", which would produce "2012-01-30". This is due to November being 30 days in length, and December being 31 days in length, producing a total of 61 days.

Note:

number is an integer number; if a decimal number is given, the dot (or comma) is likely interpreted as delimiter. For instance, '+1.5 hours' is parsed like '+1 5 hours', not as '+1 hour +30 minutes'.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值