আমার এক স্বেচ্ছাসেবী পরিমাণ মিলি সেকেন্ডগুলিকে দিন, ঘন্টা, মিনিট সেকেন্ডে রূপান্তর করতে হবে।
উদাহরণস্বরূপ: 10 দিন, 5 ঘন্টা, 13 মিনিট, 1 সেকেন্ড।
আমার এক স্বেচ্ছাসেবী পরিমাণ মিলি সেকেন্ডগুলিকে দিন, ঘন্টা, মিনিট সেকেন্ডে রূপান্তর করতে হবে।
উদাহরণস্বরূপ: 10 দিন, 5 ঘন্টা, 13 মিনিট, 1 সেকেন্ড।
উত্তর:
ঠিক আছে, যেহেতু অন্য কারও পদক্ষেপ নেই, তাই আমি এটি করার জন্য সহজ কোডটি লিখব:
x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24
x /= 24
days = x
আমি খুব খুশি যে আপনি দিনগুলিতে থামলেন এবং কয়েক মাস জিজ্ঞাসা করলেন না। :)
উল্লেখ্য যে উপরের অংশে, এটি ধরে নেওয়া হয় যে সংক্ষিপ্ত /
পূর্ণসংখ্যা বিভাগকে উপস্থাপন করে। আপনি যদি এই কোডটি এমন কোনও ভাষায় ব্যবহার করেন যেখানে /
ভাসমান পয়েন্ট বিভাগের প্রতিনিধিত্ব করে তবে আপনার প্রয়োজন অনুসারে বিভাগের ফলাফলগুলি ম্যানুয়ালি কাটাতে হবে।
A কে মিলিসেকেন্ডের পরিমাণ হতে দিন। তারপরে আপনার রয়েছে:
seconds=(A/1000)%60
minutes=(A/(1000*60))%60
hours=(A/(1000*60*60))%24
ইত্যাদি%
মডুলাস অপারেটর)।
আশাকরি এটা সাহায্য করবে.
/
ভাসমান পয়েন্ট বিভাজন করে, আপনার মানটি কেটে ফেলতে হবে। এটি অন্যান্য উত্তরে ধরে নেওয়া /
হয় যা পূর্ণসংখ্যা বিভাগ করছে।
নীচের উভয় সমাধান জাভাস্ক্রিপ্ট ব্যবহার করে (আমি সমাধানের ভাষা অজ্ঞানী ছিল কিনা আমার কোনও ধারণা ছিল না!)। উভয় সমাধানের সময়সীমা ক্যাপচার করা হলে প্রসারিত হওয়া দরকার > 1 month
।
var date = new Date(536643021);
var str = '';
str += date.getUTCDate()-1 + " days, ";
str += date.getUTCHours() + " hours, ";
str += date.getUTCMinutes() + " minutes, ";
str += date.getUTCSeconds() + " seconds, ";
str += date.getUTCMilliseconds() + " millis";
console.log(str);
দেয়:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"
গ্রন্থাগারগুলি সহায়ক, তবে যখন আপনি চাকাটি পুনরায় উদ্ভাবন করতে পারেন তখন কেন একটি লাইব্রেরি ব্যবহার করবেন! :)
var getDuration = function(millis){
var dur = {};
var units = [
{label:"millis", mod:1000},
{label:"seconds", mod:60},
{label:"minutes", mod:60},
{label:"hours", mod:24},
{label:"days", mod:31}
];
// calculate the individual unit values...
units.forEach(function(u){
millis = (millis - (dur[u.label] = (millis % u.mod))) / u.mod;
});
// convert object to a string representation...
var nonZero = function(u){ return dur[u.label]; };
dur.toString = function(){
return units
.reverse()
.filter(nonZero)
.map(function(u){
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
})
.join(', ');
};
return dur;
};
আপনার প্রয়োজনীয় ক্ষেত্রগুলি সহ একটি "সময়কাল" অবজেক্ট তৈরি করে। একটি টাইমস্ট্যাম্প ফর্ম্যাট করা তারপর সহজ হয়ে যায় ...
console.log(getDuration(536643021).toString());
দেয়:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
var nonZero = function(u){ return !u.startsWith("0"); }; // convert object to a string representation... dur.toString = function(){ return units.reverse().map(function(u){ return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label); }).filter(nonZero).join(', '); };
এ্যাপাচি কমন্স ল্যাঙ টি DurationFormatUtils মত খুব সহায়ক পদ্ধতি আছে যা formatDurationWords ।
আপনি যে কোনও ভাষা ব্যবহার করছেন তার ডেটটাইম ফাংশনগুলি ব্যবহার করা উচিত তবে কেবল মজাদার জন্য এখানে কোডটি দেওয়া হয়েছে:
int milliseconds = someNumber;
int seconds = milliseconds / 1000;
int minutes = seconds / 60;
seconds %= 60;
int hours = minutes / 60;
minutes %= 60;
int days = hours / 24;
hours %= 24;
এটি আমি লিখেছি একটি পদ্ধতি। এটি গ্রহণ করে integer milliseconds value
এবং একটি প্রদান করে human-readable String
:
public String convertMS(int ms) {
int seconds = (int) ((ms / 1000) % 60);
int minutes = (int) (((ms / 1000) / 60) % 60);
int hours = (int) ((((ms / 1000) / 60) / 60) % 24);
String sec, min, hrs;
if(seconds<10) sec="0"+seconds;
else sec= ""+seconds;
if(minutes<10) min="0"+minutes;
else min= ""+minutes;
if(hours<10) hrs="0"+hours;
else hrs= ""+hours;
if(hours == 0) return min+":"+sec;
else return hrs+":"+min+":"+sec;
}
function convertTime(time) {
var millis= time % 1000;
time = parseInt(time/1000);
var seconds = time % 60;
time = parseInt(time/60);
var minutes = time % 60;
time = parseInt(time/60);
var hours = time % 24;
var out = "";
if(hours && hours > 0) out += hours + " " + ((hours == 1)?"hr":"hrs") + " ";
if(minutes && minutes > 0) out += minutes + " " + ((minutes == 1)?"min":"mins") + " ";
if(seconds && seconds > 0) out += seconds + " " + ((seconds == 1)?"sec":"secs") + " ";
if(millis&& millis> 0) out += millis+ " " + ((millis== 1)?"msec":"msecs") + " ";
return out.trim();
}
আমি আপনার ভাষা / পছন্দের কাঠামো যেগুলি তারিখ / সময় ফাংশন / গ্রন্থাগারগুলি ব্যবহার করে তা ব্যবহার করার পরামর্শ দেব would স্ট্রিং ফর্ম্যাটিং ফাংশনগুলিও দেখুন কারণ তারা প্রায়শই তারিখ / টাইমস্ট্যাম্পগুলি পাস করার সহজ উপায় সরবরাহ করে এবং একটি মানব পাঠযোগ্য স্ট্রিং ফর্ম্যাট আউটপুট দেয়।
আপনার পছন্দগুলি সহজ:
Long serverUptimeSeconds =
(System.currentTimeMillis() - SINCE_TIME_IN_MILLISECONDS) / 1000;
String serverUptimeText =
String.format("%d days %d hours %d minutes %d seconds",
serverUptimeSeconds / 86400,
( serverUptimeSeconds % 86400) / 3600 ,
((serverUptimeSeconds % 86400) % 3600 ) / 60,
((serverUptimeSeconds % 86400) % 3600 ) % 60
);
Long expireTime = 69l;
Long tempParam = 0l;
Long seconds = math.mod(expireTime, 60);
tempParam = expireTime - seconds;
expireTime = tempParam/60;
Long minutes = math.mod(expireTime, 60);
tempParam = expireTime - minutes;
expireTime = expireTime/60;
Long hours = math.mod(expireTime, 24);
tempParam = expireTime - hours;
expireTime = expireTime/24;
Long days = math.mod(expireTime, 30);
system.debug(days + '.' + hours + ':' + minutes + ':' + seconds);
এটি মুদ্রণ করা উচিত: 0.0: 1: 9
কেন শুধু এই জাতীয় কিছু করবেন না:
var এমএস = 86400;
var সেকেন্ড = এমএস / 1000; //86.4
var মিনিট = সেকেন্ড / 60; //1.4400000000000002
var ঘন্টা = মিনিট / 60; //0.024000000000000004
var দিন = ঘন্টা / 24; //0.0010000000000000002
এবং ভাসমান নির্ভুলতার সাথে কাজ করে যেমন সংখ্যা (মিনিটস টু ফিক্সড (5)) //1.44
জাবাতে
public static String formatMs(long millis) {
long hours = TimeUnit.MILLISECONDS.toHours(millis);
long mins = TimeUnit.MILLISECONDS.toMinutes(millis);
long secs = TimeUnit.MILLISECONDS.toSeconds(millis);
return String.format("%dh %d min, %d sec",
hours,
mins - TimeUnit.HOURS.toMinutes(hours),
secs - TimeUnit.MINUTES.toSeconds(mins)
);
}
এরকম কিছু দেয়:
12h 1 min, 34 sec
আমি আপনার প্রশ্নের প্রথম উত্তর মন্তব্য করতে সক্ষম নই, তবে একটি ছোট্ট ভুল আছে। ভাসমান পয়েন্ট সংখ্যাটিকে পূর্ণসংখ্যায় রূপান্তর করতে আপনার পার্সেন্ট বা ম্যাথ.ফ্লুর ব্যবহার করা উচিত, i
var days, hours, minutes, seconds, x;
x = ms / 1000;
seconds = Math.floor(x % 60);
x /= 60;
minutes = Math.floor(x % 60);
x /= 60;
hours = Math.floor(x % 24);
x /= 24;
days = Math.floor(x);
ব্যক্তিগতভাবে, আমি আমার প্রকল্পগুলিতে কফিস্ক্রিপ্ট ব্যবহার করি এবং আমার কোডটি এর মতো দেখায়:
getFormattedTime : (ms)->
x = ms / 1000
seconds = Math.floor x % 60
x /= 60
minutes = Math.floor x % 60
x /= 60
hours = Math.floor x % 24
x /= 24
days = Math.floor x
formattedTime = "#{seconds}s"
if minutes then formattedTime = "#{minutes}m " + formattedTime
if hours then formattedTime = "#{hours}h " + formattedTime
formattedTime
এটি একটি সমাধান। পরে আপনি ":" দ্বারা বিভক্ত হয়ে অ্যারের মানগুলি নিতে পারেন
/**
* Converts milliseconds to human readeable language separated by ":"
* Example: 190980000 --> 2:05:3 --> 2days 5hours 3min
*/
function dhm(t){
var cd = 24 * 60 * 60 * 1000,
ch = 60 * 60 * 1000,
d = Math.floor(t / cd),
h = '0' + Math.floor( (t - d * cd) / ch),
m = '0' + Math.round( (t - d * cd - h * ch) / 60000);
return [d, h.substr(-2), m.substr(-2)].join(':');
}
var delay = 190980000;
var fullTime = dhm(delay);
console.log(fullTime);
টাইমউনাইট ব্যবহার করে আমার সমাধানটি এখানে দেওয়া হল।
আপডেট: আমার উল্লেখ করা উচিত যে এটি গ্রোভিতে লেখা হয়েছে, তবে জাভা প্রায় অভিন্ন।
def remainingStr = ""
/* Days */
int days = MILLISECONDS.toDays(remainingTime) as int
remainingStr += (days == 1) ? '1 Day : ' : "${days} Days : "
remainingTime -= DAYS.toMillis(days)
/* Hours */
int hours = MILLISECONDS.toHours(remainingTime) as int
remainingStr += (hours == 1) ? '1 Hour : ' : "${hours} Hours : "
remainingTime -= HOURS.toMillis(hours)
/* Minutes */
int minutes = MILLISECONDS.toMinutes(remainingTime) as int
remainingStr += (minutes == 1) ? '1 Minute : ' : "${minutes} Minutes : "
remainingTime -= MINUTES.toMillis(minutes)
/* Seconds */
int seconds = MILLISECONDS.toSeconds(remainingTime) as int
remainingStr += (seconds == 1) ? '1 Second' : "${seconds} Seconds"
এটি করার একটি নমনীয় উপায়:
(বর্তমান তারিখের জন্য তৈরি করা হয়নি তবে মেয়াদের পক্ষে যথেষ্ট ভাল)
/**
convert duration to a ms/sec/min/hour/day/week array
@param {int} msTime : time in milliseconds
@param {bool} fillEmpty(optional) : fill array values even when they are 0.
@param {string[]} suffixes(optional) : add suffixes to returned values.
values are filled with missings '0'
@return {int[]/string[]} : time values from higher to lower(ms) range.
*/
var msToTimeList=function(msTime,fillEmpty,suffixes){
suffixes=(suffixes instanceof Array)?suffixes:[]; //suffixes is optional
var timeSteps=[1000,60,60,24,7]; // time ranges : ms/sec/min/hour/day/week
timeSteps.push(1000000); //add very big time at the end to stop cutting
var result=[];
for(var i=0;(msTime>0||i<1||fillEmpty)&&i<timeSteps.length;i++){
var timerange = msTime%timeSteps[i];
if(typeof(suffixes[i])=="string"){
timerange+=suffixes[i]; // add suffix (converting )
// and fill zeros :
while( i<timeSteps.length-1 &&
timerange.length<((timeSteps[i]-1)+suffixes[i]).length )
timerange="0"+timerange;
}
result.unshift(timerange); // stack time range from higher to lower
msTime = Math.floor(msTime/timeSteps[i]);
}
return result;
};
নোট : আপনি সময় সীমাটি নিয়ন্ত্রণ করতে চাইলে আপনি প্যারামিটার হিসাবে টাইমস্টেপস সেটও করতে পারেন।
কীভাবে ব্যবহার করবেন (একটি পরীক্ষার অনুলিপি করুন):
var elsapsed = Math.floor(Math.random()*3000000000);
console.log( "elsapsed (labels) = "+
msToTimeList(elsapsed,false,["ms","sec","min","h","days","weeks"]).join("/") );
console.log( "half hour : "+msToTimeList(elsapsed,true)[3]<30?"first":"second" );
console.log( "elsapsed (classic) = "+
msToTimeList(elsapsed,false,["","","","","",""]).join(" : ") );
আমি http://www.ocpsoft.org/ ব্যাখ্যা tytime/ ব্যবহার করার পরামর্শ দিচ্ছি tytime লাইব্রেরি ..
মানুষের পাঠযোগ্য ফর্মের মতো সময় ব্যবধান পাওয়া খুব সহজ
PrettyTime p = new PrettyTime();
System.out.println(p.format(new Date()));
এটি "এখন থেকে মুহুর্তের" মতো মুদ্রণ করবে
অন্য উদাহরণ
PrettyTime p = new PrettyTime());
Date d = new Date(System.currentTimeMillis());
d.setHours(d.getHours() - 1);
String ago = p.format(d);
তারপরে স্ট্রিং আগে = "1 ঘন্টা আগে"
এখানে জাভাতে আরও সুনির্দিষ্ট পদ্ধতি রয়েছে, আমি এই সাধারণ যুক্তিটি বাস্তবায়িত করেছি, আশা করি এটি আপনাকে সহায়তা করবে:
public String getDuration(String _currentTimemilliSecond)
{
long _currentTimeMiles = 1;
int x = 0;
int seconds = 0;
int minutes = 0;
int hours = 0;
int days = 0;
int month = 0;
int year = 0;
try
{
_currentTimeMiles = Long.parseLong(_currentTimemilliSecond);
/** x in seconds **/
x = (int) (_currentTimeMiles / 1000) ;
seconds = x ;
if(seconds >59)
{
minutes = seconds/60 ;
if(minutes > 59)
{
hours = minutes/60;
if(hours > 23)
{
days = hours/24 ;
if(days > 30)
{
month = days/30;
if(month > 11)
{
year = month/12;
Log.d("Year", year);
Log.d("Month", month%12);
Log.d("Days", days % 30);
Log.d("hours ", hours % 24);
Log.d("Minutes ", minutes % 60);
Log.d("Seconds ", seconds % 60);
return "Year "+year + " Month "+month%12 +" Days " +days%30 +" hours "+hours%24 +" Minutes "+minutes %60+" Seconds "+seconds%60;
}
else
{
Log.d("Month", month);
Log.d("Days", days % 30);
Log.d("hours ", hours % 24);
Log.d("Minutes ", minutes % 60);
Log.d("Seconds ", seconds % 60);
return "Month "+month +" Days " +days%30 +" hours "+hours%24 +" Minutes "+minutes %60+" Seconds "+seconds%60;
}
}
else
{
Log.d("Days", days );
Log.d("hours ", hours % 24);
Log.d("Minutes ", minutes % 60);
Log.d("Seconds ", seconds % 60);
return "Days " +days +" hours "+hours%24 +" Minutes "+minutes %60+" Seconds "+seconds%60;
}
}
else
{
Log.d("hours ", hours);
Log.d("Minutes ", minutes % 60);
Log.d("Seconds ", seconds % 60);
return "hours "+hours+" Minutes "+minutes %60+" Seconds "+seconds%60;
}
}
else
{
Log.d("Minutes ", minutes);
Log.d("Seconds ", seconds % 60);
return "Minutes "+minutes +" Seconds "+seconds%60;
}
}
else
{
Log.d("Seconds ", x);
return " Seconds "+seconds;
}
}
catch (Exception e)
{
Log.e(getClass().getName().toString(), e.toString());
}
return "";
}
private Class Log
{
public static void d(String tag , int value)
{
System.out.println("##### [ Debug ] ## "+tag +" :: "+value);
}
}