উত্তর:
আপনি gmdate()
ফাংশনটি ব্যবহার করতে পারেন :
echo gmdate("H:i:s", 685);
datetime
... সুতরাং আমরা যদি ফলাফলটি 24 ঘন্টা আশা করি তবে এটি কার্যকর হবে না। এছাড়াও যদি আমাদের কিছু নেতিবাচক ফলাফল প্রয়োজন (উদাহরণস্বরূপ অফসেটের সাথে কাজ করা) এটি কাজ করবে না। -1
বিশদ বিবরণ জন্য
echo gmdate("z H:i:s", 685);
z ব্যবহার করতে পারেন বছরের সাথে শুরু হওয়া দিনগুলি 0 দিয়ে শুরু হয় আপনি আপনার নির্দিষ্ট প্রয়োজনগুলি পূরণ করতে অবশ্যই পিএইচপি তারিখের ম্যানুয়াল পর্যালোচনা করতে পারেন।
এক ঘন্টা 3600 সেকস, এক মিনিট 60 সেকস তাই কেন নয়:
<?php
$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;
echo "$hours:$minutes:$seconds";
?>
যা উত্পাদন করে:
$ php file.php
0:11:25
(আমি এটি খুব বেশি পরীক্ষা করে দেখিনি, সুতরাং মেঝেতে বা ত্রুটি হতে পারে)
printf("%02d:%02d:%02d", $hours, $minutes, $seconds);
sprintf
এটি মুদ্রণের পরিবর্তে মানটি ব্যবহার করুন।
আপনি এখানে যান
function format_time($t,$f=':') // t = seconds, f = separator
{
return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f, ($t/60)%60, $f, $t%60);
}
echo format_time(685); // 00:11:25
return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
gmdate()
সেকেন্ড 86400
(1 দিন) এর চেয়ে কম হলে কেবল ফাংশনটি ব্যবহার করুন :
$seconds = 8525;
echo gmdate('H:i:s', $seconds);
# 02:22:05
দেখুন: জিএমডিট ()
'ফুট' বিন্যাসে সেকেন্ডে রূপান্তর করুন কোনও সীমা নেই * :
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
দেখুন: মেঝে () , স্প্রিন্টফ () , গণিত অপারেটরগুলি
DateTime
এক্সটেনশনের ব্যবহারের উদাহরণ :
$seconds = 8525;
$zero = new DateTime("@0");
$offset = new DateTime("@$seconds");
$diff = $zero->diff($offset);
echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s);
# 02:22:05
দেখুন: ডেটটাইম :: __ কনস্ট্রাক্ট () , ডেটটাইম :: মডিফাই () , ক্লোন , স্প্রিন্টফ ()
মাইএসকিউএল উদাহরণ ফলাফলের পরিসীমা TIME এর ডাটা টাইপ, যা থেকে যে সীমাবদ্ধ -838:59:59
করতে838:59:59
:
SELECT SEC_TO_TIME(8525);
# 02:22:05
দেখুন: SEC_TO_TIME
পোস্টগ্রিএসকিউএল উদাহরণ:
SELECT TO_CHAR('8525 second'::interval, 'HH24:MI:SS');
# 02:22:05
অন্যান্য সমাধানগুলি ব্যবহার করে gmdate
তবে প্রান্তের ক্ষেত্রে ব্যর্থ হয় যেখানে আপনার 86400 সেকেন্ডের বেশি থাকে। এটি পেতে, আমরা কেবল নিজেরাই ঘন্টাগুলির সংখ্যা গণনা করতে পারি, তারপরে gmdate
বাকী সেকেন্ডগুলি মিনিট / সেকেন্ডে গণনা করি ।
echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);
ইনপুট: 6030
আউটপুট:1:40:30
ইনপুট: 2000006030
আউটপুট:555557:13:50
// TEST
// 1 Day 6 Hours 50 Minutes 31 Seconds ~ 111031 seconds
$time = 111031; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
echo "{$days}d {$hours}h {$minutes}m {$seconds}s"; // 1d 6h 50m 31s
gmdate("H:i:s", no_of_seconds);
1 দিনের বেশি (এক দিনের মধ্যে সেকেন্ড) বেশি H:i:s
হলে ফর্ম্যাটে সময় দেবে না no_of_seconds
।
এটি দিনের মানটিকে অবহেলা করবে এবং কেবলমাত্র দেবেHour:Min:Seconds
উদাহরণ স্বরূপ:
gmdate("H:i:s", 89922); // returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
এখানে এমন একটি লাইন রয়েছে যা নেতিবাচক সেকেন্ড এবং 1 দিনের বেশি সেকেন্ডের জন্য পরিচালনা করে।
sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
উদাহরণ স্বরূপ:
$seconds= -24*60*60 - 2*60*60 - 3*60 - 4; // minus 1 day 2 hours 3 minutes 4 seconds
echo sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
আউটপুট: -26: 03: 04
একটি অ্যারের ফিরে আসার জন্য এই জাতীয় ফাংশন লিখুন
function secondsToTime($seconds) {
// extract hours
$hours = floor($seconds / (60 * 60));
// extract minutes
$divisor_for_minutes = $seconds % (60 * 60);
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
// return the final array
$obj = array(
"h" => (int) $hours,
"m" => (int) $minutes,
"s" => (int) $seconds,
);
return $obj;
}
তারপরে কেবল এইভাবে ফাংশনটি কল করুন:
secondsToTime(100);
আউটপুট হয়
Array ( [h] => 0 [m] => 1 [s] => 40 )
আপনি যদি স্বীকৃত উত্তর বা জনপ্রিয় পছন্দগুলি পছন্দ না করেন তবে এটি ব্যবহার করে দেখুন
function secondsToTime($seconds_time)
{
if ($seconds_time < 24 * 60 * 60) {
return gmdate('H:i:s', $seconds_time);
} else {
$hours = floor($seconds_time / 3600);
$minutes = floor(($seconds_time - $hours * 3600) / 60);
$seconds = floor($seconds_time - ($hours * 3600) - ($minutes * 60));
return "$hours:$minutes:$seconds";
}
}
secondsToTime(108620); // 30:10:20
দেখা:
/**
* Convert number of seconds into hours, minutes and seconds
* and return an array containing those values
*
* @param integer $inputSeconds Number of seconds to parse
* @return array
*/
function secondsToTime($inputSeconds) {
$secondsInAMinute = 60;
$secondsInAnHour = 60 * $secondsInAMinute;
$secondsInADay = 24 * $secondsInAnHour;
// extract days
$days = floor($inputSeconds / $secondsInADay);
// extract hours
$hourSeconds = $inputSeconds % $secondsInADay;
$hours = floor($hourSeconds / $secondsInAnHour);
// extract minutes
$minuteSeconds = $hourSeconds % $secondsInAnHour;
$minutes = floor($minuteSeconds / $secondsInAMinute);
// extract the remaining seconds
$remainingSeconds = $minuteSeconds % $secondsInAMinute;
$seconds = ceil($remainingSeconds);
// return the final array
$obj = array(
'd' => (int) $days,
'h' => (int) $hours,
'm' => (int) $minutes,
's' => (int) $seconds,
);
return $obj;
}
থেকে: সেকেন্ডগুলিকে দিন, ঘন্টা, মিনিট এবং সেকেন্ডে রূপান্তর করুন
এটা চেষ্টা কর:
date("H:i:s",-57600 + 685);
Http://bytes.com/topic/php/answers/3917-seconds-converted-hh-mm-ss থেকে নেওয়া
কোনও প্রকল্পে আমি কাজ করার সময়গুলি ট্র্যাক করে থাকায় জিএমডিটেট () ফাংশনটি আমার পক্ষে কাজ করেনি এবং যদি এটি 24 ঘন্টার বেশি হয়, 24 ঘন্টা বিয়োগের পরে আপনি পরিমাণটি অবশিষ্ট রাখবেন। অন্য কথায় 37 ঘন্টা 13 ঘন্টা হয়ে যায়। (উপরে বর্ণিত সমস্ত গ্লাভিক - আপনার উদাহরণগুলির জন্য ধন্যবাদ!) এটি ভালভাবে কাজ করেছে:
Convert seconds to format by 'foot' no limit :
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
এই ফাংশনটি আমার কাজে লাগবে, আপনি এটি বাড়িয়ে দিতে পারেন:
function formatSeconds($seconds) {
if(!is_integer($seconds)) {
return FALSE;
}
$fmt = "";
$days = floor($seconds / 86400);
if($days) {
$fmt .= $days."D ";
$seconds %= 86400;
}
$hours = floor($seconds / 3600);
if($hours) {
$fmt .= str_pad($hours, 2, '0', STR_PAD_LEFT).":";
$seconds %= 3600;
}
$mins = floor($seconds / 60 );
if($mins) {
$fmt .= str_pad($mins, 2, '0', STR_PAD_LEFT).":";
$seconds %= 60;
}
$fmt .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $fmt;}
সমাধান থেকে: https://gist.github.com/SteveJobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b
এই কোডটি ক্লান্তিকর ফাংশন কলগুলি এবং টুকরো টুকরো স্ট্রিং-বিল্ডিং যতটা সম্ভব এড়ানো যায় এবং লোকেদের জন্য এটি করা বড় এবং বিশাল ফাংশনগুলি।
এটি "1h05m00s" ফর্ম্যাট তৈরি করে এবং মিনিট এবং সেকেন্ডের জন্য নেতৃস্থানীয় শূন্যগুলি ব্যবহার করে, যতক্ষণ না অন্য শূন্য সময়ের উপাদানগুলি তাদের পূর্ববর্তী হয়।
এবং আপনাকে "0h00m01s" এর মতো অকেজো তথ্য না দেওয়ার জন্য সমস্ত খালি নেতৃস্থানীয় উপাদান এড়িয়ে চলেছে (পরিবর্তে এটি "1s" হিসাবে প্রদর্শিত হবে)।
উদাহরণ ফলাফল: "1s", "1m00s", "19m08s", "1h00m00s", "4h08m39s"।
$duration = 1; // values 0 and higher are supported!
$converted = [
'hours' => floor( $duration / 3600 ),
'minutes' => floor( ( $duration / 60 ) % 60 ),
'seconds' => ( $duration % 60 )
];
$result = ltrim( sprintf( '%02dh%02dm%02ds', $converted['hours'], $converted['minutes'], $converted['seconds'] ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
আপনি যদি কোডটি আরও ছোট করতে চান (তবে কম পাঠযোগ্য) তবে আপনি $converted
অ্যারে এড়াতে পারবেন এবং পরিবর্তে মানগুলি সরাসরি স্প্রিন্টফ () কলটিতে রেখে দিতে পারেন:
$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
উপরের কোড পিসের উভয় ক্ষেত্রেই সময়কাল 0 বা উচ্চতর হতে হবে । নেতিবাচক সময়সীমা সমর্থিত নয়। তবে আপনি পরিবর্তে নিম্নলিখিত বিকল্প কোড ব্যবহার করে নেতিবাচক সময়সীমা পরিচালনা করতে পারেন:
$duration = -493; // negative values are supported!
$wasNegative = FALSE;
if( $duration < 0 ) { $wasNegative = TRUE; $duration = abs( $duration ); }
$converted = [
'hours' => floor( $duration / 3600 ),
'minutes' => floor( ( $duration / 60 ) % 60 ),
'seconds' => ( $duration % 60 )
];
$result = ltrim( sprintf( '%02dh%02dm%02ds', $converted['hours'], $converted['minutes'], $converted['seconds'] ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
if( $wasNegative ) { $result = "-{$result}"; }
// $result is now "-8m13s"
gmdate()
হ্যাকটি এর চেয়ে আরও ছোট, তবে কেবল 24 ঘন্টা পর্যন্ত সময়সীমা সমর্থন করে। আপনি জিএমডিট ট্রিকটি ব্যবহার করলে ২৪ ঘন্টার উপরে যে কোনও কিছু ব্যর্থ হবে!
এর জন্য ডেটটাইম ব্যবহার করার একটি সহজ উপায় হ'ল:
$time = 60; //sec.
$now = time();
$rep = new DateTime('@'.$now);
$diff = new DateTime('@'.($now+$time));
$return = $diff->diff($rep)->format($format);
//output: 01:04:65
এটি একটি সাধারণ সমাধান যা আপনাকে তারিখের সময় পদ্ধতিটি বিন্যাসটি ব্যবহার করার ক্ষমতা দেয়।
জাভাতে আপনি এইভাবে ব্যবহার করতে পারেন।
private String getHmaa(long seconds) {
String string;
int hours = (int) seconds / 3600;
int remainder = (int) seconds - hours * 3600;
int mins = remainder / 60;
//remainder = remainder - mins * 60;
//int secs = remainder;
if (hours < 12 && hours > 0) {
if (mins < 10) {
string = String.valueOf((hours < 10 ? "0" + hours : hours) + ":" + (mins > 0 ? "0" + mins : "0") + " AM");
} else {
string = String.valueOf((hours < 10 ? "0" + hours : hours) + ":" + (mins > 0 ? mins : "0") + " AM");
}
} else if (hours >= 12) {
if (mins < 10) {
string = String.valueOf(((hours - 12) < 10 ? "0" + (hours - 12) : ((hours - 12) == 12 ? "0" : (hours - 12))) + ":" + (mins > 0 ? "0" + mins : "0") + ((hours - 12) == 12 ? " AM" : " PM"));
} else {
string = String.valueOf(((hours - 12) < 10 ? "0" + (hours - 12) : ((hours - 12) == 12 ? "0" : (hours - 12))) + ":" + (mins > 0 ? mins : "0") + ((hours - 12) == 12 ? " AM" : " PM"));
}
} else {
if (mins < 10) {
string = String.valueOf("0" + ":" + (mins > 0 ? "0" + mins : "0") + " AM");
} else {
string = String.valueOf("0" + ":" + (mins > 0 ? mins : "0") + " AM");
}
}
return string;
}
function timeToSecond($time){
$time_parts=explode(":",$time);
$seconds= ($time_parts[0]*86400) + ($time_parts[1]*3600) + ($time_parts[2]*60) + $time_parts[3] ;
return $seconds;
}
function secondToTime($time){
$seconds = $time % 60;
$seconds<10 ? "0".$seconds : $seconds;
if($seconds<10) {
$seconds="0".$seconds;
}
$time = ($time - $seconds) / 60;
$minutes = $time % 60;
if($minutes<10) {
$minutes="0".$minutes;
}
$time = ($time - $minutes) / 60;
$hours = $time % 24;
if($hours<10) {
$hours="0".$hours;
}
$days = ($time - $hours) / 24;
if($days<10) {
$days="0".$days;
}
$time_arr = array($days,$hours,$minutes,$seconds);
return implode(":",$time_arr);
}
ভাল আমার এমন কিছু দরকার ছিল যা কয়েক সেকেন্ডকে কয়েক মিনিট এবং সেকেন্ডের মধ্যে হ্রাস করতে পারে, তবে 24 ঘন্টা ছাড়িয়ে যাবে এবং আরও কিছুদিনের মধ্যে হ্রাস পাবে না।
এখানে একটি সাধারণ ফাংশন যা কাজ করে। আপনি সম্ভবত এটি উন্নতি করতে পারেন ... তবে এটি এখানে:
function formatSeconds($seconds)
{
$hours = 0;$minutes = 0;
while($seconds >= 60){$seconds -= 60;$minutes++;}
while($minutes >= 60){$minutes -=60;$hours++;}
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $hours.":".$minutes.":".$seconds;
}
$given = 685;
/*
* In case $given == 86400, gmdate( "H" ) will convert it into '00' i.e. midnight.
* We would need to take this into consideration, and so we will first
* check the ratio of the seconds i.e. $given:$number_of_sec_in_a_day
* and then after multiplying it by the number of hours in a day (24), we
* will just use "floor" to get the number of hours as the rest would
* be the minutes and seconds anyways.
*
* We can also have minutes and seconds combined in one variable,
* e.g. $min_sec = gmdate( "i:s", $given );
* But for versatility sake, I have taken them separately.
*/
$hours = ( $given > 86399 ) ? '0'.floor( ( $given / 86400 ) * 24 )-gmdate( "H", $given ) : gmdate("H", $given );
$min = gmdate( "i", $given );
$sec = gmdate( "s", $given );
echo $formatted_string = $hours.':'.$min.':'.$sec;
এটিকে কোনও ফাংশনে রূপান্তর করতে:
function getHoursFormat( $given ){
$hours = ( $given > 86399 ) ? '0'.floor( ( $given / 86400 ) * 24 )-gmdate( "H", $given ) : gmdate("H", $given );
$min = gmdate( "i", $given );
$sec = gmdate( "s", $given );
$formatted_string = $hours.':'.$min.':'.$sec;
return $formatted_string;
}
আপনার যদি জাভাস্ক্রিপ্টে এটি করার দরকার হয় তবে আপনি এখানে উত্তর হিসাবে কোডের এক লাইনে এটি করতে পারেন এখানে জাভাস্ক্রিপ্ট সহ সেকেন্ডে এইচএইচ-এমএম-এসএসে রূপান্তর করুন । আপনি রূপান্তর করতে চান তা দিয়ে SECONDS প্রতিস্থাপন করুন ।
var time = new Date(SECONDS * 1000).toISOString().substr(11, 8);
আপনি যদি ইউটিউব ইত্যাদির মতো কোনও অডিও / ভিডিও সময়কাল স্ট্রিং তৈরি করতে চান তবে আপনি এটি করতে পারেন:
($seconds >= 60) ? ltrim(gmdate("H:i:s", $seconds), ":0") : gmdate("0:s", $seconds)
এর মতো স্ট্রিংগুলি ফিরে আসবে:
55.55 => '0:55'
100 => '1:40'
সম্ভবত সময়> = 24 ঘন্টা ভাল কাজ করবে না।
এটি করার একটি দুর্দান্ত উপায়:
function time_converter($sec_time, $format='h:m:s'){
$hour = intval($sec_time / 3600) >= 10 ? intval($sec_time / 3600) : '0'.intval($sec_time / 3600);
$minute = intval(($sec_time % 3600) / 60) >= 10 ? intval(($sec_time % 3600) / 60) : '0'.intval(($sec_time % 3600) / 60);
$sec = intval(($sec_time % 3600) % 60) >= 10 ? intval(($sec_time % 3600) % 60) : '0'.intval(($sec_time % 3600) % 60);
$format = str_replace('h', $hour, $format);
$format = str_replace('m', $minute, $format);
$format = str_replace('s', $sec, $format);
return $format;
}
এই ক্ষেত্রে সুন্দরভাবে ফর্ম্যাটেড ফিরিয়ে দেওয়ার জন্য অন্য কেউ যদি সাধারণ কোনও ফাংশন সন্ধান করতে চান (তবে আমি জানি যে এটি ওপি যে ফর্ম্যাটটির অনুরোধ করেছিল তা নয়), আমি কেবল এটিই নিয়ে এসেছি। এই ভিত্তিতে কোডটির জন্য @ মুঘলকে ধন্যবাদ জানাই।
function format_timer_result($time_in_seconds){
$time_in_seconds = ceil($time_in_seconds);
// Check for 0
if ($time_in_seconds == 0){
return 'Less than a second';
}
// Days
$days = floor($time_in_seconds / (60 * 60 * 24));
$time_in_seconds -= $days * (60 * 60 * 24);
// Hours
$hours = floor($time_in_seconds / (60 * 60));
$time_in_seconds -= $hours * (60 * 60);
// Minutes
$minutes = floor($time_in_seconds / 60);
$time_in_seconds -= $minutes * 60;
// Seconds
$seconds = floor($time_in_seconds);
// Format for return
$return = '';
if ($days > 0){
$return .= $days . ' day' . ($days == 1 ? '' : 's'). ' ';
}
if ($hours > 0){
$return .= $hours . ' hour' . ($hours == 1 ? '' : 's') . ' ';
}
if ($minutes > 0){
$return .= $minutes . ' minute' . ($minutes == 1 ? '' : 's') . ' ';
}
if ($seconds > 0){
$return .= $seconds . ' second' . ($seconds == 1 ? '' : 's') . ' ';
}
$return = trim($return);
return $return;
}
ভবিষ্যতে যার যারাই এটি খুঁজছেন, এটি প্রাথমিক পোস্টারটির জন্য অনুরোধ করা ফর্ম্যাটটি দেয়।
$init = 685;
$hours = floor($init / 3600);
$hrlength=strlen($hours);
if ($hrlength==1) {$hrs="0".$hours;}
else {$hrs=$hours;}
$minutes = floor(($init / 60) % 60);
$minlength=strlen($minutes);
if ($minlength==1) {$mins="0".$minutes;}
else {$mins=$minutes;}
$seconds = $init % 60;
$seclength=strlen($seconds);
if ($seclength==1) {$secs="0".$seconds;}
else {$secs=$seconds;}
echo "$hrs:$mins:$secs";
<?php
$time=3*3600 + 30*60;
$year=floor($time/(365*24*60*60));
$time-=$year*(365*24*60*60);
$month=floor($time/(30*24*60*60));
$time-=$month*(30*24*60*60);
$day=floor($time/(24*60*60));
$time-=$day*(24*60*60);
$hour=floor($time/(60*60));
$time-=$hour*(60*60);
$minute=floor($time/(60));
$time-=$minute*(60);
$second=floor($time);
$time-=$second;
if($year>0){
echo $year." year, ";
}
if($month>0){
echo $month." month, ";
}
if($day>0){
echo $day." day, ";
}
if($hour>0){
echo $hour." hour, ";
}
if($minute>0){
echo $minute." minute, ";
}
if($second>0){
echo $second." second, ";
}
seconds
একটিdate/time
বা কিছু সময়কে রূপান্তর করতে চান : মিনিট: সেকেন্ড?