ホームページ  >  記事  >  バックエンド開発  >  2 つのタイムスタンプ間の時間の長さを計算するための PHP 実装

2 つのタイムスタンプ間の時間の長さを計算するための PHP 実装

WBOY
WBOYオリジナル
2016-07-25 08:45:231404ブラウズ
  1. /**
  2. * 2 つの時刻間の時間を返します、*年*月*日*時*分*秒
  3. * @param int $one_time time one
  4. * @param int $two_time time two
  5. * @param int $return_type デフォルト値は次のとおりです0、0/ が 0 でない場合、連結は 1/* 秒、2/* 分* 秒、3/* 時* 分* 秒/、4/* 日* 時* 分* 秒、5/* 月を返します。 * day *時*分*秒, 6/*年*月*日*時*分*秒
  6. * @param array $format_array 文字の書式設定、たとえば、array('year', 'month', 'day', '時'、'分'、'秒')
  7. * @return 文字列または false
  8. */
  9. public function getRemainderTime($one_time, $two_time, $return_type=0, $format_array=array('年', '月', '日', '時', '分', '秒')){
  10. if($return_type<0 || $return_type>6){
  11. return false;
  12. }
  13. if(!(is_int($one_time) && is_int($two_time))){
  14. return false;
  15. }
  16. $remainder_秒 = abs($one_time-$two_time);
  17. //年
  18. $years = 0;
  19. if(($return_type==0 || $return_type==6) && $remainder_seconds-31536000> ;0){
  20. $years = Floor($remainder_秒/(31536000));
  21. }
  22. //月
  23. $monthes = 0;
  24. if(($return_type==0 || $return_type>=5) && $remainder_秒-$years*31536000-2592000>0){
  25. $monthes = Floor(($remainder_seconds-$years*31536000)/(2592000));
  26. }
  27. //日
  28. $days = 0;
  29. if(($return_type ==0 || $return_type>=4) && $remainder_seconds-$years*31536000-$monthes*2592000-86400>0){
  30. $days = Floor(($remainder_seconds-$years*31536000-$monthes*2592000) /(86400));
  31. }
  32. //時間
  33. $hours = 0;
  34. if(($return_type==0 || $return_type>=3) && $remainder_seconds-$years*31536000-$monthes*2592000-$ days*86400-3600>0){
  35. $hours = Floor(($remainder_seconds-$years*31536000-$monthes*2592000-$days*86400)/3600);
  36. }
  37. //分
  38. $ minutes = 0;
  39. if(($return_type==0 || $return_type>=2) && $remainder_秒-$年*31536000-$月*2592000-$日*86400-$時間*3600-60>0){
  40. $分 = Floor(($remainder_秒-$年*31536000- $monthes*2592000-$days*86400-$hours*3600)/60);
  41. }
  42. //秒
  43. $秒 = $remainder_秒-$年*31536000-$monthes*2592000-$days*86400-$hours* 3600-$分*60;
  44. $return = false;
  45. switch ($return_type){
  46. case 0:
  47. if($years>0){
  48. $return = $years.$format_array[0].$monthes.$ format_array[1].$days.$format_array[2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5];
  49. }else if($monthes>0 ){
  50. $return = $monthes.$format_array[1].$days.$format_array[2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5] ;
  51. }else if($days>0){
  52. $return = $days.$format_array[2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5] ];
  53. }else if($hours>0){
  54. $return = $hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5];
  55. }else if($ minutes>0){
  56. $return = $ minutes.$format_array[4].$秒.$format_array[5];
  57. }else{
  58. $return = $秒.$format_array[5];
  59. }
  60. ブレーク;
  61. ケース 1:
  62. $return = $秒.$format_array[5];
  63. ブレーク;
  64. ケース 2:
  65. $return = $ minutes.$format_array[4].$秒.$format_array[5];
  66. ブレーク;
  67. ケース 3:
  68. $return = $hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5];
  69. ブレーク;
  70. ケース 4:
  71. $return = $days.$format_array [2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5];
  72. ブレーク;
  73. ケース 5:
  74. $return = $monthes.$format_array[1] .$days.$format_array[2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5];
  75. ブレーク;
  76. ケース 6:
  77. $return = $years .$format_array[0].$monthes.$format_array[1].$days.$format_array[2].$hours.$format_array[3].$ minutes.$format_array[4].$秒.$format_array[5] ];
  78. ブレーク;
  79. デフォルト:
  80. $return = false;
  81. }
  82. return $return;
  83. }
复制代

PHP


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。