年、月、日、時、分がある場合に、デバイス構成の日付と時刻に従って正しくフォーマットする方法は?
25 に答える
標準の Java DateFormat クラスを使用します。
たとえば、現在の日付と時刻を表示するには、次のようにします。
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
独自の値で Date オブジェクトを初期化できますが、コンストラクターは非推奨であり、実際には Java Calendar オブジェクトを使用する必要があることに注意してください。
私の意見でandroid.text.format.DateFormat.getDateFormat(context)
は、このメソッドは--- "ではjava.text.DateFormat
なく戻るため、混乱しますandroid.text.format.DateFormat
。
そこで、以下のフラグメントコードを使用して、現在の日付/時刻を自分の形式で取得します。
android.text.format.DateFormat df = new android.text.format.DateFormat();
df.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
or
android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
さらに、他の形式を使用できます。DateFormatに従ってください。
日付からロケールへの日付文字列:
Date date = new Date();
String stringDate = DateFormat.getDateTimeInstance().format(date);
オプション:
DateFormat.getDateInstance()
- > 1969 年 12 月 31 日
DateFormat.getDateTimeInstance()
-> 1969 年 12 月 31 日午後 4:00:00
DateFormat.getTimeInstance()
-> 午後 4:00:00
これはそれを行います:
Date date = new Date();
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
SimpleDateFormat を使用する
このような:
event.putExtra("starttime", "12/18/2012");
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date date = format.parse(bundle.getString("starttime"));
これに続いて:http://developer.android.com/reference/android/text/format/Time.html
Android ネイティブの Time クラスを使用することをお勧めします。
Time now = new Time();
now.setToNow();
次にフォーマットします。
Log.d("DEBUG", "Time "+now.format("%d.%m.%Y %H.%M.%S"));
これら2つをクラス変数として使用します。
public java.text.DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
private Calendar mDate = null;
そして、次のように使用します。
mDate = Calendar.getInstance();
mDate.set(year,months,day);
dateFormat.format(mDate.getTime());
SimpleDateFormat
カスタム パターンなしでSimpleDateFormat を使用して、デバイスの事前選択された形式でシステムから実際の日付と時刻を取得します。
public static String getFormattedDate() {
//SimpleDateFormat called without pattern
return new SimpleDateFormat().format(Calendar.getInstance().getTime());
}
戻り値:
- 13.01.15 11:45
- 2015 年 1 月 13 日午前 10 時 45 分
- ...
これが私の方法です。入力および出力形式を定義および定義できます。
public static String formattedDateFromString(String inputFormat, String outputFormat, String inputDate){
if(inputFormat.equals("")){ // if inputFormat = "", set a default input format.
inputFormat = "yyyy-MM-dd hh:mm:ss";
}
if(outputFormat.equals("")){
outputFormat = "EEEE d 'de' MMMM 'del' yyyy"; // if inputFormat = "", set a default output format.
}
Date parsed = null;
String outputDate = "";
SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault());
SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault());
// You can set a different Locale, This example set a locale of Country Mexico.
//SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, new Locale("es", "MX"));
//SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, new Locale("es", "MX"));
try {
parsed = df_input.parse(inputDate);
outputDate = df_output.format(parsed);
} catch (Exception e) {
Log.e("formattedDateFromString", "Exception in formateDateFromstring(): " + e.getMessage());
}
return outputDate;
}
Time クラスで build を使用してください。
Time time = new Time();
time.set(0, 0, 17, 4, 5, 1999);
Log.i("DateTime", time.format("%d.%m.%Y %H:%M:%S"));
このコードは、現在の日付と時刻を返します。
public String getCurrDate()
{
String dt;
Date cal = Calendar.getInstance().getTime();
dt = cal.toLocaleString();
return dt;
}
私はこのように使用します:
public class DateUtils {
static DateUtils instance;
private final DateFormat dateFormat;
private final DateFormat timeFormat;
private DateUtils() {
dateFormat = android.text.format.DateFormat.getDateFormat(MainApplication.context);
timeFormat = android.text.format.DateFormat.getTimeFormat(MainApplication.context);
}
public static DateUtils getInstance() {
if (instance == null) {
instance = new DateUtils();
}
return instance;
}
public synchronized static String formatDateTime(long timestamp) {
long milliseconds = timestamp * 1000;
Date dateTime = new Date(milliseconds);
String date = getInstance().dateFormat.format(dateTime);
String time = getInstance().timeFormat.format(dateTime);
return date + " " + time;
}
}
試す:
event.putExtra("startTime", "10/05/2012");
そして、渡された変数にアクセスしている場合:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(bundle.getString("startTime"));
Android Time クラスは、3 つのフォーマット メソッドを提供しますhttp://developer.android.com/reference/android/text/format/Time.html
これが私がやった方法です:
/**
* This method will format the data from the android Time class (eg. myTime.setToNow()) into the format
* Date: dd.mm.yy Time: hh.mm.ss
*/
private String formatTime(String time)
{
String fullTime= "";
String[] sa = new String[2];
if(time.length()>1)
{
Time t = new Time(Time.getCurrentTimezone());
t.parse(time);
// or t.setToNow();
String formattedTime = t.format("%d.%m.%Y %H.%M.%S");
int x = 0;
for(String s : formattedTime.split("\\s",2))
{
System.out.println("Value = " + s);
sa[x] = s;
x++;
}
fullTime = "Date: " + sa[0] + " Time: " + sa[1];
}
else{
fullTime = "No time data";
}
return fullTime;
}
お役に立てば幸いです:-)