回答:
あなたは使うことができます:
import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();
Calendarには、必要なすべての定数がたくさんあります。
編集:カレンダークラスのドキュメントを
確認する
Calendar.getInstance().getTime()
またはCalendar.getInstance().getTimeInMillis()
動作します。
android.text.format.Timeを使用できます(ただし、もう必要ありません。以下を参照してください)。
Time now = new Time();
now.setToNow();
上にリンクされた参照から:
Timeクラスは、java.util.Calendarクラスとjava.util.GregorianCalendarクラスのより高速な置き換えです。Timeクラスのインスタンスは、秒の精度で指定された瞬間を表します。
注1: この回答を書いてから数年が経ちましたが、これは古いAndroid固有のクラスで、現在は非推奨となっています。Googleは今言う「[t]は彼のクラスには多くの問題があり、することが推奨されていることのGregorianCalendarが代わりに使用されています」。
注2:にもかかわらず、Time
クラスが持ちますtoMillis(ignoreDaylightSavings)
メソッドを、これは単にミリ秒単位で時間を期待するメソッドに渡す便利です。時間の値は1秒までしか正確ではありません。ミリ秒の部分は常に000
です。ループする場合
Time time = new Time(); time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...
結果のシーケンスは1410543204000
、次の1秒が始まるまで、同じ値を繰り返します。1410543205000
繰り返しを開始します。
SystemClock.uptimeMillis()
、間隔のタイミングを推奨しています。これはほとんどの組み込み関数が使用するものであるため、すべてのデバイスで適切に実装される強い動機があります。SystemClockのディスカッションを参照してください...時刻と関連付ける場合は、アプリのonResumeで、これとTime / setToNow / toMillisの両方をお読みください。それらの違いを覚えておいてください。
GregorianCalendar
は、何年も前にJavaに、そして後にAndroidでjava.timeクラスに取って代わられましたZonedDateTime
。以前のAndroidについては、ThreeTen-BackportおよびThreeTenABPプロジェクトを参照してください。
特定のパターンで日付と時刻を取得したい場合は、以下を使用できます。
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
または、
日付:
String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
時間:
String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
sdf.setTimeZone(TimeZone.getDefault())
真ん中に挿入できます
カスタマイズされたフォーマットを好むかもしれない人のために、あなたは使うことができます:
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());
一方、次のようなDateFormatパターンを使用できます。
"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
実際には、でデバイスに設定されている現在のタイムゾーンを設定する方が安全Time.getCurrentTimezone()
です。そうしないと、現在の時刻がUTCで取得されます。
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
次に、たとえば次のように、必要なすべての日付フィールドを取得できます。
textViewDay.setText(today.monthDay + ""); // Day of the month (1-31)
textViewMonth.setText(today.month + ""); // Month (0-11)
textViewYear.setText(today.year + ""); // Year
textViewTime.setText(today.format("%k:%M:%S")); // Current time
android.text.format.Timeを参照してくださいクラスをご覧ください。
更新
多くの人々が指摘しているように、グーグルはこのクラスには多くの問題があり、もう使用されるべきではないと言っています:
このクラスには多くの問題があるため、代わりにGregorianCalendarを使用することをお勧めします。
既知の問題点:
時間計算を実行する際の歴史的な理由により、すべての演算は現在32ビット整数を使用して行われます。これにより、1902年から2037年まで表現可能な信頼できる時間範囲が制限されます。詳細については、2038年問題に関するウィキペディアの記事を参照してください。この動作に依存しないでください。将来変更される可能性があります。DSTの移行によりスキップされたウォールタイムなど、存在できない日付でswitchTimezone(String)を呼び出すと、1969年の日付になります(つまり、-1、つまり1970年1月1日のUTCの1秒前の1秒)。書式設定/解析の多くはASCIIテキストを想定しているため、非ASCIIスクリプトでの使用には適していません。
現在の日時については、以下を使用します。
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
どの出力:
Feb 27, 2012 5:41:23 PM
Instant.now() // Current moment in UTC.
…または…
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // In a particular time zone
他の回答は正しいですが、時代遅れです。古い日時クラスは設計が不十分で、混乱し、面倒であることが証明されています。
これらの古いクラスは、java.timeフレームワークに取って代わられました。
これらの新しいクラスは、JSR 310によって定義され、ThreeTen-Extraプロジェクトによって拡張された、非常に成功したJoda- Timeプロジェクトに触発されました。
Oracleチュートリアルを参照してください。
Instant
An Instant
は、ナノ秒までの解像度を持つUTCのタイムライン上の瞬間です。
Instant instant = Instant.now(); // Current moment in UTC.
タイムゾーン(ZoneId
)を適用してを取得しZonedDateTime
ます。時間帯を省略すると、JVMの現在のデフォルトの時間帯が暗黙的に適用されます。望ましい/期待されるタイムゾーンを明示的に指定することをお勧めします。
使用する適切なタイムゾーン名をの形式でcontinent/region
のようなAmerica/Montreal
、Europe/Brussels
またはAsia/Kolkata
。決してなど3-4文字の略語を使用していないEST
か、IST
彼らはどちらも標準化もなく、独特のとおりです。
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
String
は、日時値のテキスト表現として簡単に生成できます。標準形式、独自のカスタム形式、または自動的にローカライズされた形式を使用できます。
toString
メソッドを呼び出して、一般的で実用的なISO 8601標準を使用してフォーマットされたテキストを取得できます。
String output = instant.toString();
2016-03-23T03:09:01.613Z
のZonedDateTime
場合、toString
メソッドはISO 8601標準を拡張し、角かっこでタイムゾーンの名前を追加することに注意してください。非常に有用で重要な情報ですが、標準ではありません。
2016-03-22T20:09:01.613-08:00 [アメリカ/ロス_アンジェレス]
または、DateTimeFormatter
クラスで独自の特定のフォーマットパターンを指定します。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );
Locale
人間の言語(英語、フランス語など)を指定して、日/月の名前の翻訳や、年月日などの文化的基準の定義にも使用します。注Locale
タイムゾーンとは何の関係もありません。
formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );
さらに良いことに、java.timeにローカライズの作業を自動的に行わせます。
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) ); // Or Locale.CANADA_FRENCH and so on.
java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date
、Calendar
、& SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
詳細については、Oracleチュートリアルを参照してください。スタックオーバーフローで多くの例と説明を検索してください。仕様はJSR 310です。
java.timeオブジェクトをデータベースと直接交換することができます。JDBC 4.2以降に準拠したJDBCドライバーを使用します。文字列もクラスも必要ありません。java.sql.*
java.timeクラスはどこで入手できますか?
Instant.now()
そしてZonedDateTime.now()
必要になるAPI 26
System.currentTimeMillis()
Javaの標準である現在の時刻を取得するために使用できます。次に、それを使用して日付を作成できます
Date currentDate = new Date(System.currentTimeMillis());
そして、時間を作成するために他の人が述べたように
Time currentTime = new Time();
currentTime.setToNow();
Cannot resolve constructor Date()
Androidの@Jonik では、Android SDKはJava 6と7の混合を使用します
Date currentDate = new Date(System.currentTimeMillis());
正解です
new Date(System.currentTimeMillis())
。(a)とまったく同じであるため、冗長new Date()
です。(b)問題のあるjava.util.Date
クラスはjava.time.Instant
、Java 8以降で置き換えられています。ThreeTen-BackportプロジェクトのJava 6&7と、ThreeTenABPの以前のAndroid(<26)にバックポートしました。
次のコードを使用できます。
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
出力:
2014-11-11 00:47:55
ここSimpleDateFormat
から、さらにいくつかのフォーマットオプションを利用できます。
java.util.Date
、java.util.Calendar
とjava.text.SimpleDateFormat
今のレガシーに取って代わられ、java.timeの後にJavaの8とに組み込まれたクラス。Oracleによるチュートリアルを参照してください。
簡単です。次のように、時間を分析して現在の時間の個別の値を取得できます。
Calendar cal = Calendar.getInstance();
int millisecond = cal.get(Calendar.MILLISECOND);
int second = cal.get(Calendar.SECOND);
int minute = cal.get(Calendar.MINUTE);
//12 hour format
int hour = cal.get(Calendar.HOUR);
//24 hour format
int hourofday = cal.get(Calendar.HOUR_OF_DAY);
同じことが次のように日付にも当てはまります。
Calendar cal = Calendar.getInstance();
int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
int year = cal.get(Calendar.YEAR);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);
Androidは主にJavaであるため、いくつかのオプションがありますが、textViewで記述したい場合は、次のコードでうまくいきます。
String currentDateTimeString = DateFormat.getDateInstance().format(new Date());
// textView is the TextView view that should display it
textView.setText(currentDateTimeString);
Calendar
またはを使用してくださいGregorianCalendar
。このDate
クラスは非推奨です。
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
String currentDateandTime = databaseDateTimeFormate.format(new Date()); //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date()); //2009-06-30
String currentDateandTime = sdf1.format(new Date()); //30.06.09
String currentDateandTime = sdf2.format(new Date()); //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date()); //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date()); //8:29 PM
String currentDateandTime = sdf5.format(new Date()); //8:29
String currentDateandTime = sdf6.format(new Date()); //8:28:36:249
String currentDateandTime = sdf7.format(new Date()); //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date()); //2009.June.30 AD 08:29 AM
日付形式パターン
G Era designator (before christ, after christ)
y Year (e.g. 12 or 2012). Use either yy or yyyy.
M Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d Day in month. Number of d's determine length of format (e.g. d or dd)
h Hour of day, 1-12 (AM / PM) (normally hh)
H Hour of day, 0-23 (normally HH)
m Minute in hour, 0-59 (normally mm)
s Second in minute, 0-59 (normally ss)
S Millisecond in second, 0-999 (normally SSS)
E Day in week (e.g Monday, Tuesday etc.)
D Day in year (1-366)
F Day of week in month (e.g. 1st Thursday of December)
w Week in year (1-53)
W Week in month (0-5)
a AM / PM marker
k Hour in day (1-24, unlike HH's 0-23)
K Hour in day, AM / PM (0-11)
z Time Zone
final Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
textView.setText(""+mDay+"-"+mMonth+"-"+mYear);
これは、日付と時刻を取得するのに役立つメソッドです。
private String getDate(){
DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
String date=dfDate.format(Calendar.getInstance().getTime());
DateFormat dfTime = new SimpleDateFormat("HH:mm");
String time = dfTime.format(Calendar.getInstance().getTime());
return date + " " + time;
}
このメソッドを呼び出して、現在の日付と時刻の値を取得できます。
2017/01//09 19:23
SimpleDateFormat
秒と2 Date
秒を使用している理由もわかりません。"yyyy/MM/dd HH:mm"
形式としてだけ使用して、カレンダーを一度呼び出すことはできませんか?
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("time => " + dateFormat.format(cal.getTime()));
String time_str = dateFormat.format(cal.getTime());
String[] s = time_str.split(" ");
for (int i = 0; i < s.length; i++) {
System.out.println("date => " + s[i]);
}
int year_sys = Integer.parseInt(s[0].split("/")[0]);
int month_sys = Integer.parseInt(s[0].split("/")[1]);
int day_sys = Integer.parseInt(s[0].split("/")[2]);
int hour_sys = Integer.parseInt(s[1].split(":")[0]);
int min_sys = Integer.parseInt(s[1].split(":")[1]);
System.out.println("year_sys => " + year_sys);
System.out.println("month_sys => " + month_sys);
System.out.println("day_sys => " + day_sys);
System.out.println("hour_sys => " + hour_sys);
System.out.println("min_sys => " + min_sys);
現在の日付と時刻と形式については、
Javaで
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)
コトリンで
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
var myDate: String = current.format(formatter)
Log.d("Date","DATE : " + myDate)
} else {
var date = Date()
val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
val myDate: String = formatter.format(date)
Log.d("Date","DATE : " + myDate)
}
日付フォーマッターパターン
"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
現在の日付が必要な場合:
Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);
現在の時刻が必要な場合:
int mHour = cc.get(Calendar.HOUR_OF_DAY);
int mMinute = cc.get(Calendar.MINUTE);
System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));
カスタマイズされた時刻と日付の形式の場合:
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
String cDateTime=dateFormat.format(new Date());
出力は次のような形式です:2015-06-18T10:15:56-05:00
Date todayDate = new Date();
todayDate.getDay();
todayDate.getHours();
todayDate.getMinutes();
todayDate.getMonth();
todayDate.getTime();
次を使用して日付を取得できます。
Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");
これにより、次の例のように、適切な形式で結果が得られます: "2014/02/09"。
Time t = new Time();
は、デフォルトのタイムゾーンを使用します。私の経験では、デフォルト==現在です。
まあ、APIによるいくつかの回答に問題があったので、このコードを融合しました。
Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date1 = t.format("%Y/%m/%d");
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
Locale.ENGLISH);
String var = dateFormat.format(date);
String horafecha = var+ " - " + date1;
tvTime.setText(horafecha);
出力:03:25 PM-2017/10/03
以下のメソッドは、現在の日付と時刻を文字列で返します。実際のタイムゾーンに応じて異なるタイムゾーンを使用します。私はGMTを使用しました
public static String GetToday(){
Date presentTime_Date = Calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormat.format(presentTime_Date);
}
新しいAPIに従ってCalenderクラスを使用する必要があります。Dateクラスは非推奨になりました。
Calendar cal = Calendar.getInstance();
String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);
String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);