9

years months weeksミリ秒の日付を数値とに変換しようとしていdaysます。

例:5 months, 2 weeks and 3 daysまたは1 year and 1 day

私はしたくない:7 daysまたは4 weeks>これはとでなければなりませ1 week1 month

私はいくつかの方法を試しましたが、それは常にのようなものになりました7 days and 0 weeks

私のコード:

int weeks = (int) Math.abs(timeInMillis / (24 * 60 * 60 * 1000 * 7));
int days = (int) timeInMillis / (24 * 60 * 60 * 1000)+1);

23時間あれば1日になるので、日数に1を足す必要があります。

正しく変換する方法を教えてください。もっと効率的な方法があると思います。

4

3 に答える 3

35

私は常にこれをミリ秒から年などを取得するために使用し、その逆も同様です。今まで問題はありませんでした。それが役に立てば幸い。

import java.util.Calendar;

Calendar c = Calendar.getInstance(); 
//Set time in milliseconds
c.setTimeInMillis(milliseconds);
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH); 
int mDay = c.get(Calendar.DAY_OF_MONTH);
int hr = c.get(Calendar.HOUR);
int min = c.get(Calendar.MINUTE);
int sec = c.get(Calendar.SECOND);
于 2013-03-17T13:40:31.157 に答える
8

Shobhit Puriのおかげで、私の問題は解決しました。

このコードは、特定の時間に含まれる月数、日数などをミリ秒単位で計算します。2つの日付の差を計算するために使用します。

完全な解決策:

long day = (1000 * 60 * 60 * 24); // 24 hours in milliseconds
long time = day * 39; // for example, 39 days

Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
int mYear = c.get(Calendar.YEAR)-1970;
int mMonth = c.get(Calendar.MONTH); 
int mDay = c.get(Calendar.DAY_OF_MONTH)-1;
int mWeek = (c.get(Calendar.DAY_OF_MONTH)-1)/7; // ** if you use this, change the mDay to (c.get(Calendar.DAY_OF_MONTH)-1)%7

ありがとうございました!

于 2013-03-17T19:32:43.393 に答える
4

出典:秒単位で指定された時間間隔をより人間が読める形式に変換します

function secondsToString(seconds)
{
var numyears = Math.floor(seconds / 31536000);
var numdays = Math.floor((seconds % 31536000) / 86400); 
var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60);
var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60;
return numyears + " years " +  numdays + " days " + numhours + " hours " + numminutes + " minutes " + numseconds + " seconds";

}
于 2013-03-17T12:58:59.277 に答える