PHP新天性DateTime常用方法整理,oracle加减操作

上面,列出某个实用的表达式:

上边,列出部分实用的表明式:

任凭DATE照旧timestamp都能够拓展加减操作。
能够对眼下天子加年、月、日、时、分、秒,操作分化的时光项目,有三种办法:

对DateTime对象使用的不二法门进行了部分整理,方便未来的追寻和读书

实例化对象后边加\意味着的是,在命名空间中利用原生的类,假设没有选拔命名空间的话,能够把前边的\给删除掉

 

 

一 使用内置函数numtodsinterval扩大小时,分钟和秒
二 加二个简便的数来充实天
3 使用内置函数add_months来扩展年和月

一. 输出当前天子

$datetime = new \DateTime;
print_r($datetime->format('Y-m-d H:i:s'));

1,路线取文件名

1,路线取文件名

例:
对眼下天子扩大一个小时:
SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from dual ;

二. 出口给定的光阴

$datetime = new \DateTime('2016-06-13');
print_r($datetime);

 

 

PHP新天性DateTime常用方法整理,oracle加减操作。SYSDATE             SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:38:19 2010-10-14 22:38:19
对现阶段日期增添四二十一分种
SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from dual ;

3. 依照给定的年月格式化为团结想要的岁月

$datetime = \DateTime::createFromFormat('Ymd', '20160618');
print_r($datetime->format('Y-m-d'));
1 RIGHT([FilePath],FINDSTRING(REVERSE([FilePath]),"\\",1) - 1)  
2 RIGHT(@[User::FilePath],FINDSTRING(REVERSE(@[User::FilePath]),"\\",1) - 1)  
1 RIGHT([FilePath],FINDSTRING(REVERSE([FilePath]),"\\",1) - 1)  
2 RIGHT(@[User::FilePath],FINDSTRING(REVERSE(@[User::FilePath]),"\\",1) - 1)  

SYSDATE             SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:39:12 2010-10-14 22:29:12
对脚下日子扩充45秒
SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from dual ;

4. 输出Unix时间戳格式(方法一倘使是198陆年从前的会回去负数,而艺术2则会回到false)

//方法1(php5.2):
$datetime = new \DateTime();
echo $datetime->format('U');exit;

//方法2(php5.3)推荐
$datetime = new \DateTime();
echo $datetime->getTimestamp();exit;

 

 

SYSDATE             SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:40:06 2010-10-14 21:40:51
对现阶段日子增添3天
SQL> select sysdate, sysdate+3 from dual ;

伍. 基于给定的年月戳格式化为给定的岁月

$datetime = new \DateTime();
$datetime->setTimestamp(1465783744);
echo $datetime->format('Y-m-d H:i:s');

二,空字符设置暗许值

2,空字符设置暗中认可值

SYSDATE             SYSDATE+3
——————- ——————-
2010-10-14 21:40:46 2010-10-17 21:40:46
对眼下天子扩大半年
SQL> select sysdate, add_months(sysdate,4) from dual ;

陆. 五个日午时间比对,年与年比对,月与月比对……

$datetime1 = new \DateTime('2016-01-01 10:11:18');
$datetime2 = new \DateTime('2017-05-11 22:21:21');
$interval = $datetime1->diff($datetime2);
print_r($interval->format('%Y'));//%表示使用格式化,R表示是大于这个日期(+),还是小于这个日期(-),a表示大于或小于多少天,时分秒正常使用y,m,d,h,i,s

 

 

SYSDATE             ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:41:43 2011-02-14 21:41:43

七. 开立长度为几天前的岁月

DateInterval构造函数的参数是三个意味着时间距离约定的字符串,这些时间间隔约定以字母P初叶,前边随着1个整数,最终是一个周期标志符,限定前边的平头。有效周期标志符如下:
Y(年) M(月) D(日) W(周) H(时) M(分) S(秒)
间隔约定中既能够有时间也足以有日期,假使有时光要求在日期和岁月之间加上字母T,例如,间隔约定P2D意味间隔两日,间隔约定P二DT五H二M表示间隔两日5钟头两分钟。

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
//或者使用createFromDateString方法
//$interval = \DateInterval::createFromDateString('1 month');
//修改DateTime实例
$datetime->add($interval);
echo $datetime->format('Y-m-d H:i:s');
1 LEN([STRING_COLUMN]) == 0 ? "default value" : [STRING_COLUMN]  
2 ISNULL([STRING_COLUMN]) ? "default value" : [STRING_COLUMN]  
3 ISNULL([STRING_COLUMN]) || LEN([STRING_COLUMN]) == 0 ? "default" : [STRING_COLUMN]  
1 LEN([STRING_COLUMN]) == 0 ? "default value" : [STRING_COLUMN]  
2 ISNULL([STRING_COLUMN]) ? "default value" : [STRING_COLUMN]  
3 ISNULL([STRING_COLUMN]) || LEN([STRING_COLUMN]) == 0 ? "default" : [STRING_COLUMN]  

脚下日期增添2年
SQL> select sysdate, add_months(sysdate,12*2) from dual ;

八. 创制几天前的岁月

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
$datetime->sub($interval);
echo $datetime->format('Y-m-d H:i:s');
//ps:有个modify方法,这个方法是减去30,并不是像前推1天,输出的还是12月
$datetime = new \DateTime('2014/12/31');
$datetime->modify( '-1 month' );
print_r($datetime);exit;

3,数字

3,数字

SYSDATE             ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:42:17 2012-10-14 21:42:17

玖. 重新载入参数当前的DateTime对象的时间不一的日子,传递年,月,日

$datetime = new \DateTime();
$datetime->setDate(2015, 2, 28);
echo $datetime->format('Y-m-d');exit;

例如:123 变 00123

例如:123 变 00123

timestamp的操作方法与地点类似;
求八个日子之差:
例:求2005-伍-2叁 二1:23:34与当下光阴之间的差值。
SQL> select sysdate-to_date(’20070523 21:23:34′,’yyyy-mm-dd
hh24:mi:ss’) dt from
dual ;

十. 重新载入参数当前的DateTime对象的时刻不一的时刻,传递时,分,秒(可选参数)

$datetime = new \DateTime();
$datetime->setTime(20, 20, 24);
echo $datetime->format('Y-m-d H:i:s');exit;
1 RIGHT(("00000" + [STRING_COLUMN]), 5)  
2 REPLICATE("0", 5 - LEN([STRING_COLUMN])) + [STRING_COLUMN]  
1 RIGHT(("00000" + [STRING_COLUMN]), 5)  
2 REPLICATE("0", 5 - LEN([STRING_COLUMN])) + [STRING_COLUMN]  

DT
———-
1240.01623
纵然多个日子一贯相减,获得的结果是叁个数据型,我们也许想要获得七个日子相差值表现方式为:
**年**月**日 **:**:**
SQL> SELECT NUMTOYMINTERVAL(MONTHS_BETWEEN(DT1, DT2), ‘month’)
mon,
2        
numtodsinterval(dt1-(add_months(dt2,trunc(MONTHS_BETWEEN(DT1, DT2)))
),’day’) DAY
3    FROM (SELECT SYSDATE DT1,
4                 TO_DATE(’20070523 21:23:34′, ‘yyyy-mm-dd hh24:mi:ss’)
DT2
5          FROM DUAL)
6 ;

11. 格式化时间前更动时间的时区

$timezone = new \DateTimeZone('Asia/Calcutta');
$datetime = new \DateTime();
$datetime->setTimezone($timezone);
print_r($datetime->format('Y-m-d H:i:s'));exit;

 

 

MON                  DAY
—————-     ———————-
+000000003-04        +000000021 00:40:15.999999999

12. 回来时区

$date = new \DateTime(null, new DateTimeZone('Asia/Shanghai'));
$tz = $date->getTimezone();
echo $tz->getName();

4,日期

4,日期

即:3年 4 个月 21 天 00:40:15.99999999

一三. 总计四个时区的偏移值

$dateTimeZoneTaipei = new \DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new \DateTimeZone("Asia/Tokyo");
$dateTimeTaipei = new \DateTime("now", $dateTimeZoneTaipei);
$dateTimeJapan = new \DateTime("now", $dateTimeZoneJapan);
$timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);
print_r($timeOffset);exit;

 

 

1四. 回到时间间隔,多久

$interval = new \DateInterval('P2Y4DT6H8M');
echo $interval->format('%d days');

1
(DT_DATE)(DT_DBDATE)@[User::datetimeVariable]

1
(DT_DATE)(DT_DBDATE)@[User::datetimeVariable]

15. 迭代出口距离当明日子的前日日期。

DatePeriod类的构造方法接受多个参数而且都必须提供
1个DateTime实例,表示迭代早先的日子和岁月
三个DateInterval实例,表示下二个日期和时间的间隔
三个平头,表示迭代的总次数
第多个参数是可选的,用于显式钦点周期的告竣日期和岁月,借使迭代时想要排除起始日期和时间,可以把构造方法的末梢3个参数设为DatePeriod::EXCLUDE_START_DATE常量:

$datetime = new \DateTime();
$interval = \DateInterval::createFromDateString('-1 day');
$period = new \DatePeriod($datetime, $interval, 3);
foreach ($period as $date) {
    echo $date->format('Y-m-d'), PHP_EOL;
}

参考的稿子Laravel学院
PHP手册

2 (DT_DATE)(DT_DBDATE)[datetimeColumn]

2 (DT_DATE)(DT_DBDATE)[datetimeColumn]

3
(DT_DBTIMESTAMP)(DT_DBDATE)GETDATE()

3
(DT_DBTIMESTAMP)(DT_DBDATE)GETDATE()

日子转化成字符串

日期转化成字符串

1 (DT_WSTR, 20)YEAR( GETDATE()] )+RIGHT("0"+(DT_WSTR, 20)MONTH( GETDATE()) , 2 )+ RIGHT("0"+(DT_WSTR, 20)DAY( GETDATE() ) , 2 )
1 (DT_WSTR, 20)YEAR( GETDATE()] )+RIGHT("0"+(DT_WSTR, 20)MONTH( GETDATE()) , 2 )+ RIGHT("0"+(DT_WSTR, 20)DAY( GETDATE() ) , 2 )

 

 

 

 

5,时间

5,时间

 

 

1     (DT_STR,8,1252)(DT_DBTIME)@[User::datetimeVariable]  
2     (DT_STR,8,1252)(DT_DBTIME)[datetimeColumn]  
3     (DT_STR,8,1252)(DT_DBTIME)GETDATE()  
1     (DT_STR,8,1252)(DT_DBTIME)@[User::datetimeVariable]  
2     (DT_STR,8,1252)(DT_DBTIME)[datetimeColumn]  
3     (DT_STR,8,1252)(DT_DBTIME)GETDATE()  

 

 

6,当前月第壹天

陆,当前月第2天

 

 

1 DATEADD("d", -DAY(GETDATE()) + 1, GETDATE())  
2 (DT_DBTIMESTAMP)(DT_DBDATE)DATEADD("d", -DAY(GETDATE()) + 1, GETDATE())  
1 DATEADD("d", -DAY(GETDATE()) + 1, GETDATE())  
2 (DT_DBTIMESTAMP)(DT_DBDATE)DATEADD("d", -DAY(GETDATE()) + 1, GETDATE())  

 

 

七,当前月最后壹天

7,当前月最后壹天

 

997755.com澳门葡京, 

1 DATEADD("d", -DAY(GETDATE()), DATEADD("m", 1, GETDATE()))  
2 DT_DBTIMESTAMP)(DT_DBDATE)DATEADD("d", -DAY(GETDATE()), DATEADD("m", 1, GETDATE()))  
1 DATEADD("d", -DAY(GETDATE()), DATEADD("m", 1, GETDATE()))  
2 DT_DBTIMESTAMP)(DT_DBDATE)DATEADD("d", -DAY(GETDATE()), DATEADD("m", 1, GETDATE()))  

 

 

捌,最后壹秒

八,最终1秒

 

 

1 DATEADD("s", -1,DATEADD("d", -DAY(GETDATE()) + 1, DATEADD("m", 1, (DT_DBTIMESTAMP)(DT_DBDATE)GETDATE())))  
1 DATEADD("s", -1,DATEADD("d", -DAY(GETDATE()) + 1, DATEADD("m", 1, (DT_DBTIMESTAMP)(DT_DBDATE)GETDATE())))  

 

 

 

 

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website