今日の真夜中と明日の真夜中のJava Dateオブジェクトを作成する方法


178

私のコードでは、今日起こったすべてのことを見つける必要があります。今日の午前00:00(今朝の真夜中)から午後12:00(今夜の真夜中)までの日付と比較する必要があります。

知っている ...

Date today = new Date(); 

...今すぐ私を連れて行きます。そして...

Date beginning = new Date(0);

... 1970年1月1日にゼロタイムを取得します。しかし、今日と明日のゼロタイムを取得する簡単な方法は何ですか?

更新; 私はこれをしましたが、確かにもっと簡単な方法がありますか?

Calendar calStart = new GregorianCalendar();
calStart.setTime(new Date());
calStart.set(Calendar.HOUR_OF_DAY, 0);
calStart.set(Calendar.MINUTE, 0);
calStart.set(Calendar.SECOND, 0);
calStart.set(Calendar.MILLISECOND, 0);
Date midnightYesterday = calStart.getTime();

Calendar calEnd = new GregorianCalendar();
calEnd.setTime(new Date());
calEnd.set(Calendar.DAY_OF_YEAR, calEnd.get(Calendar.DAY_OF_YEAR)+1);
calEnd.set(Calendar.HOUR_OF_DAY, 0);
calEnd.set(Calendar.MINUTE, 0);
calEnd.set(Calendar.SECOND, 0);
calEnd.set(Calendar.MILLISECOND, 0);
Date midnightTonight = calEnd.getTime();

3
私の意見では、Joda Timeの方が簡単です。私の答えの最後を見てください。java.util.Date/Calendarを使用したい場合は、この方法で行う必要があります。これを行う簡単な方法はありません。
timaschew、2011

RE:todaschewは、Joda-Timeを使用するようコメントし、Joda-Timeプロジェクトがメンテナンスモードになっていることを確認し、java.timeクラスへの移行を推奨しています。
バジルブルク2016年

1
参考までに、非常に厄介な古い日時クラスjava.util.Datejava.util.Calendarjava.text.SimpleDateFormat今のレガシーに取って代わられ、java.timeの Javaの8に、後に内蔵されたクラス。Oracleによるチュートリアル参照してください。
バジルブルク2018

2
これに関する質問に対して、欠陥のある回答がそれほど多く見られることはめったにありません。Basil Bourqueの回答をお勧めします。これは正確で知識が豊富です。
Ole VV

回答:


344

java.util.Calendar

// today    
Calendar date = new GregorianCalendar();
// reset hour, minutes, seconds and millis
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);

// next day
date.add(Calendar.DAY_OF_MONTH, 1);

JDK 8-java.time.LocalTimeおよびjava.time.LocalDate

LocalTime midnight = LocalTime.MIDNIGHT;
LocalDate today = LocalDate.now(ZoneId.of("Europe/Berlin"));
LocalDateTime todayMidnight = LocalDateTime.of(today, midnight);
LocalDateTime tomorrowMidnight = todayMidnight.plusDays(1);

ジョーダタイム

JDK <8を使用している場合は、APIが非常に優れているため、Joda Timeをお勧めします。

DateTime date = new DateTime().toDateMidnight().toDateTime();
DateTime tomorrow = date.plusDays(1);

Joda Timeのバージョン2.3 DateMidnight非推奨なので、これを使用してください:

DateTime today = new DateTime().withTimeAtStartOfDay();
DateTime tomorrow = today.plusDays(1).withTimeAtStartOfDay();

JVMの現在のデフォルトのタイムゾーンが必要ない場合は、タイムゾーンを渡します。

DateTimeZone timeZone = DateTimeZone.forID("America/Montreal");
DateTime today = new DateTime(timeZone).withTimeAtStartOfDay(); // Pass time zone to constructor.

おかげで、元の質問を現在の方法で更新しました。提案をありがとう。

3
JodaTime 2.3以降、toDateMidnightは非推奨です。詳細については、この回答を参照してください。stackoverflow.com
Stephan

JDK 8のソリューションを追加
timaschew

1
@timaschew通常は正しいですが、Joda ZonedDateTime-Timeセクションで行ったように、ゾーン化された日時値()を使用してjava.timeを実行することをお勧めします。Local…タイプはタイムゾーン情報がありません-彼らの全体の目的は、無失う/すべてのオフセットとタイムゾーンの詳細を無視します。特に、質問でこれらの値を比較(データベースクエリなど)に使用することについて説明しているため、ゾーン化された日時値の方が便利です。
バジルブルク

1
@Amalgovinus Calendar.HOURではなくCalendar.HOUR_OF_DAYを設定してください。
オズワルド

43

完全を期すために、Java 8を使用しているtruncatedTo場合は、Instantクラスのメソッドを使用してUTCで真夜中に取得することもできます。

Instant.now().truncatedTo(ChronoUnit.DAYS);

Javadocに書かれているとおり

たとえば、MINUTES単位で切り捨てると、最も近い分に切り捨てられ、秒とナノ秒がゼロに設定されます。

それが役に立てば幸い。


1
ヒントをありがとう。指定されたタイムゾーンでの真夜中の取得はより長くなります:Date.from(date.toInstant().atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS).toInstant())
Vadzim


33

真夜中を見つける最も簡単な方法:

Long time = new Date().getTime();
Date date = new Date(time - time % (24 * 60 * 60 * 1000));

翌日:

Date date = new Date(date.getTime() + 24 * 60 * 60 * 1000);

私はそのコードを実行して得ました:真夜中:01月1日(木)19:00:00 CDT 2012
Dave

3
System.out.print(date)のようなことをした場合、システムは日付インスタンスをシステムタイムゾーン(CDT)に変換しました。CDTの午後7時はGMTの真夜中です。選択したタイムゾーンで午前0時が必要な場合は、DSTを考慮して、このタイムゾーンのオフセットを追加する必要があります。
Andrei Volgin

@Bouncnerです。地球上には、使用する方法に関係なく、さまざまな「深夜」の時刻がありますが、Javaの深夜は1つだけです。
Andrei Volgin

2
@Andrei Volgin "java midnight"があることを知りませんでした。;)私が言いたかったのは、この解決策はトピックの作成者を本当に助けていないということです。カレンダーソリューションは、醜い秒の計算を回避し、適切に使用するとタイムゾーン(特に夏時間など)を処理します。私はあなたの解決策でそれを見ません。
Bouncner 2013年

こんにちは@AndreiVolgin、私は日付を取得しましたdate = new Date(time + TimeZone.getDefault()。getRawOffset()-time%(24 * 60 * 60 * 1000));
jrey

28

Dateは、日付(!)を表すためには使用されません。日付を表すには、カレンダーが必要です。この:

Calendar c = new GregorianCalendar();

Calendar現在のタイムゾーンで現在の日付を表すインスタンスを作成します。ここで必要なのは、に設定して、日(時間、分、秒、ミリ秒)未満のすべてのフィールドを切り捨てることです0。今日は真夜中です。

次の日の午前0時を取得するには、1日を追加する必要があります。

c.add(Calendar.DAY_OF_MONTH, 1);

86400その間に夏時間が発生する可能性があるため、秒または24時間の追加は正しくないことに注意してください。

更新:ただし、この問題に対処するための私のお気に入りの方法は、Commons LangのDateUtilsクラスを使用することです

Date start = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH))
Date end = DateUtils.addDays(start, 1);

それはCalendar舞台裏で使用します...


15
助けてくれてありがとう。「日付は日付を表すために使用されていない」-それはかなり奇抜なことですよね?;)

@RobertHume公平を期すために、DateはJavaの最初のリリース以来存在しています。その時代のほとんどのものは...完全に考え抜かれたものではありません。特に、Javaはその種の試みを最初に試みたものであり、その方法については合意された標準にはほど遠いものでした。
モニカの訴訟に資金を

14

これらの方法はあなたを助けるでしょう-

public static Date getStartOfDay(Date date) {
     Calendar calendar = Calendar.getInstance();
     calendar.setTime(date);
     calendar.set(Calendar.HOUR_OF_DAY, 0);
     calendar.set(Calendar.MINUTE, 0);
     calendar.set(Calendar.SECOND, 0);
     calendar.set(Calendar.MILLISECOND, 0);
     return calendar.getTime();
 }

そして

public static Date getEndOfDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
    return calendar.getTime();
}

9

JodaTime 2.3以降、toDateMidnight()は非推奨です。

2.2から2.3へのアップグレード

    2.2以降で非推奨
    ----------------------
    -DateMidnight [#41]
     このクラスは概念に欠陥があります
     一部のタイムゾーンでは、真夜中の時間が時々発生しない場合があります
     これは、夏時間の00:00から01:00の結果です。
     DateMidnightは基本的に、時刻が真夜中にロックされたDateTimeです。
     そのような概念は、LocalDateを考えると、より一般的に使用するには不十分です
     DateMidnightをLocalDateに置き換えます
     または、おそらくwithTimeAtStartOfDay()メソッドを使用して、DateTimeに置き換えます。

toDateMidnight()メソッドのないサンプルコードを次に示します。

コード

DateTime todayAtMidnight = new DateTime().withTimeAtStartOfDay();
System.out.println(todayAtMidnight.toString("yyyy-MM-dd HH:mm:ss"));

出力ローカルのタイムゾーンによって異なる場合があります

2013-09-28 00:00:00

2
すばらしい答えです。私は合格の追加になるだろうDateTimeZoneことにインスタンスをDateTime:時間帯を指定するのではなく、誤ってデフォルトに依存することの重要性を強調するために、コンストラクタDateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
バジルボーク

9

他の回答、特にarganzhengによるjava.timeの回答は正解です。一部の人が述べたように、古いjava.util.Date/.Calendarクラスは設計が不十分で、混乱し、面倒なので、避ける必要があります。それらは、java.timeクラスに取って代わられました。

真夜中時間帯の取り扱いに関する戦略についてのメモを追加しましょう

半開き

日時作業では、多くの場合、期間は「ハーフオープン」アプローチを使用して定義されます。このアプローチでは、開始は包括的であり、終了は排他的です。これにより問題が解決され、一貫して使用すると、日時の処理に関する推論がはるかに容易になります。

解決される1つの問題は、一日の終わりを定義することです。その日の最後の瞬間23:59:59.999ミリ秒)ですか?おそらく、java.util.Dateクラス(最も初期のJavaから、問題が多い-このクラスを避けてください!)と、非常に成功したJoda-Timeライブラリで。しかし、Postgresなどのデータベースなどの他のソフトウェアでは、最後の瞬間は23:59:59.999999マイクロ秒)になります。しかし、java.timeフレームワーク(Java 8以降に組み込まれ、Joda -Timeの後継)などの他のソフトウェアや、H2データベースなどの一部のデータベースでは、最後の瞬間が23:59.59.999999999ナノ秒)になる場合があります。髪を分割するのではなく、最初の瞬間だけを考え、最後の瞬間は考えないでください。

ハーフオープンでは、1日は1日の最初の瞬間から始まり、次の日の最初の瞬間まで含まれません。したがって、このように考えるのではなく、

…今日から午前00:00(今朝の真夜中)から午後12:00(今夜の真夜中)まで。

…こう考えて…

今日の最初の瞬間から実行されますが、明日の最初の瞬間は含まれません:
(> = 00:00:00.0今日AND < 00:00:00.0明日)

データベースの作業では、このアプローチはSQLで演算子を使用しないことを意味します。BETWEEN

一日の始まり

さらに、その日の最初の瞬間が常に時刻であると限りません00:00:00.0。一部のタイムゾーンの夏時間(DST)、および場合によっては他の異常により、別の時間が1日の始まりになることがあります。

したがって、java.timeクラスが、への呼び出しで1日の始まりを決定する作業を行うようにしLocalDate::atStartOfDay( ZoneId )ます。したがって、このサンプルコードでわかるように、迂回しLocalDateて戻るZonedDateTime必要があります。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime now = ZonedDateTime.now( zoneId );
ZonedDateTime todayStart = now.toLocalDate().atStartOfDay( zoneId );
ZonedDateTime tomorrowStart = todayStart.plusDays( 1 );

オプションのの渡しに注意してくださいZoneId。省略すると、JVMの現在のデフォルトのタイムゾーンが暗黙的に適用されます。明確にするのが良いでしょう。

タイムゾーンは日付時刻の作業に不可欠です。質問と他のいくつかの回答は、意識的にタイムゾーンを処理しないため、潜在的に欠陥があります。

変換

あなたがいる場合必要があります java.util.Dateまたは.Calendarを使用し、それらの古いクラスに追加された新しい変換方法を探してください。

java.util.Date utilDate = java.util.Date.from( todayStart.toInstant() );
java.util.GregorianCalendar gregCal = java.util.GregorianCalendar.from( todayStart );

一定の期間

ちなみに、時間をかけて多くの作業を行っている場合は、以下をご覧ください。

  • Duration
  • Period
  • Interval
    このIntervalクラスは、java.timeフレームワークの拡張であるThreeTen-Extraプロジェクトにあります。このプロジェクトは、java.timeに将来追加される可能性があることの証明の場です。
    Interval todayMontreal = Interval.of( todayStart.toInstant() , tomorrowStart.toInstant() );

java.timeについて

java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.DateCalendar、& SimpleDateFormat

ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。

詳細については、Oracleチュートリアルを参照してください。また、スタックオーバーフローで多くの例と説明を検索してください。仕様はJSR 310です。

java.timeオブジェクトをデータベースと直接交換することができます。JDBC 4.2以降に準拠したJDBCドライバーを使用します。文字列もクラスも必要ありません。java.sql.*

java.timeクラスはどこで入手できますか?

ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性があることを証明する場です。あなたはここにいくつかの有用なクラスのような見つけることがIntervalYearWeekYearQuarter、および多くを


6

java.time

Java 8以降を使用している場合は、java.timeパッケージチュートリアル)を試すことができます。

LocalDate tomorrow = LocalDate.now().plusDays(1);
Date endDate = Date.from(tomorrow.atStartOfDay(ZoneId.systemDefault()).toInstant());

2
いい答えだ。希望する/予想されるタイムゾーンを指定することをお勧めします。JVMの現在のデフォルトのタイムゾーンは、OSの設定、コンピューターの変更、またはJVMのスレッド内のアプリによって、実行時にいつでもデフォルトを変更することで変化する可能性があります。
バジルブルク

4

これはオプションのようです:

DateFormat justDay = new SimpleDateFormat("yyyyMMdd");
Date thisMorningMidnight = justDay.parse(justDay.format(new Date()));

それに日を追加するには

Date tomorrow = new Date(thisMorningMidnight.getTime() + 24 * 60 * 60 * 1000);

または

Calendar c = Calendar.getInstance();
c.setTime(thisMorningMidnight);
c.add(Calendar.DATE, 1);
Date tomorrowFromCalendar = c.getTime();

夏時間のように奇妙な場合に24時間を追加するだけでは不十分な場合に後者が好ましいと思いますhttps://stackoverflow.com/a/4336131/32453とその他の回答を参照)。


私のsqliteデータベースでは、日付と時刻がlongとして表されています。翌日の初めまでに時間がかかります。上記で使用したSimpleDateFormatメソッドではなく、longでもDateオブジェクトを使用できますか?
AJW 2018年

1
正しいミリ秒である限り、コンストラクタとして渡すことができます。docs.oracle.com
7

1

私はこれを他の誰もがやったのとは違うやり方でやった。私はJavaを初めて使用するので、おそらく私のソリューションは貧弱です。

Date now = new Date();
Date midnightToday = new Date(now.getYear(), now.getMonth(), now.getDate());

これがまだ機能するかどうかはわかりませんが、どちらにしても、このソリューションに関するフィードバックをいただければ幸いです。

上記のステートメントでは、次のように呼び出すことで明日を計算できると混乱しています。

c.add(Calendar.DAY_OF_MONTH, 1);

月の日に1を加えて31日だとすると、32日は得られませんか。

時刻/日付がすべてJavaのUTCに基づいていないのはなぜですか?タイムゾーンはI / Oで使用する場合にのみ必要であると思いますが、内部では常にUTCで使用する必要があります。ただし、クラスにはタイムゾーン情報が含まれているように見えます。これは無駄であるだけでなく、コーディングエラーが発生しやすいようです。


2
こんにちはミッチ。私はあなたの解決策はうまくいくと思いますが、そのDateコンストラクタは廃止されているようです。Javaの人々は、元の日付関連メソッドのほとんどをしばらくの間非推奨にし、それらを新しいカレンダー関連メソッドに置き換えました。個人的には、それがどのように改善されるかはわかりませんが、非推奨のメソッドを使用することは眉をひそめています。ありがとう!

非推奨について悲しい。時間、分、秒、ミリ秒をクリアするのではなく、年、月、日付を指定する方が私にはずっとクリーンに思えます。これらをクリアするには、ミリ秒がDateクラスの最も細かい単位であることに依存していますが、私のソリューションではそうではありません。私の解決策も短くて明確です。Javaを初めて使用することで、日付と時刻の使用に関して、C ++がいかにクリーンで、簡単で、効率的であるかに本当に感謝しています。
Mitch、2011

@ミッチ私の経験では、あなたが学んでいる最新の言語は常に最も複雑であると認識されています。
ArtOfWarfare 2012年

参考までに:これらの流血のひどい古い日時クラスは今ではレガシーであり、現代のjava.timeクラスに取って代わられました。
バジルブルク2017年


0

JodaTimeを使用する最も簡単な方法

DateMidnight date = DateMidnight.now();


2
いいえ。Joda-Timeの「深夜」関連のクラスとメソッドはすべて非推奨になりました。彼らは欠陥のあるコンセプトに基づいていました。その日の最初の瞬間は常にではありません00:00:00.000。代わりに、新しいwithTimeAtStartOfDayメソッドを使用してください。Joda-Timeの現在のバージョン2.4に更新し、リリースノートをお読みください。例:DateTime today = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay();
バジルブルク2014

0

1日は24 * 60 * 60 * 1000msなので、この日の真夜中は次のように計算できます...

long now = System.currentTimeMillis();
long delta = now % 24 * 60 * 60 * 1000;
long midnight = now - delta;
Date midnightDate = new Date(midnight);`

1
このコードはUTCにのみ適用され、他のタイムゾーンには適用されません。夏時間などの異常は無視されます。さらに、これは驚くほどトリッキーなトピックであるため、独自の日時ソリューションをロールするのは賢明ではありません。代わりに、優れたjava.timeクラスを使用してください。
バジルブルク

0

以前の回答とほとんど同じですが、AM_PMパラメータについては誰も触れていません。

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    cal.set(Calendar.AM_PM, Calendar.AM);

1
問題のあるCalendarクラスは、特にjava.timeクラスに取って代わられましたZonedDateTime
バジルブルク

0
Date now= new Date();
// Today midnight
Date todayMidnight = new Date(endTime.getTime() -endTime.getTime()%DateUtils.MILLIS_PER_DAY);

// tomorrow midnight
Date tomorrowMidnight = new Date(endTime.getTime() -endTime.getTime()%DateUtils.MILLIS_PER_DAY + DateUtils.MILLIS_PER_DAY);

これはUTCでのみ機能し、タイムゾーンに対応できません。また、恐ろしいDateクラスは何年も前にに取って代わられましたjava.time.InstantDate最近は使用しないでください。
バジルブルク2018

0

Apache Commonsを使用しています。

//For midnight today 
Date today = new Date(); 
DateUtils.truncate(today, Calendar.DATE);

//For midnight tomorrow   
Date tomorrow = DateUtils.addDays(today, 1); 
DateUtils.truncate(tomorrow, Calendar.DATE);

以下のようなFYI、ひどく面倒な古い日付時刻クラスjava.util.Datejava.util.Calendarjava.text.SimpleDateFormat今のレガシーに取って代わられ、java.timeの Javaの8に、後に内蔵されたクラス。Oracleによるチュートリアル参照してください。
バジルブルク2018年

@BasilBourqueはJava 8に同意しました。しかし、OPがJava 7を使用している場合、それでもうまくいくと思います。
joe4java 2018年

Java.time機能のほぼすべてが、実質的に同一のAPIを備えたThreeTen-BackportプロジェクトのJava 6および7で使用できます。ThreeTenABPプロジェクトでAndroid <26にさらに適合。したがって、これらの惨めな古い日時クラスを再び使用する必要はありません。
バジルブルク

-1

これは非常に古い投稿です。ここに私の知識を共有しようと思いました!

正確なタイムゾーンを持つ今日の真夜中の日付の場合、次を使用できます

public static Date getCurrentDateWithMidnightTS(){

    return new Date(System.currentTimeMillis() - (System.currentTimeMillis()%(1000*60*60*24)) - (1000*60 * 330));
}

(1000*60 * 330)差し引かれる場所、つまり実際にタイムゾーンに関連付けられている場所 (たとえば、インドのタイムゾーン、つまりコルカタ)は、実際とは+5:30時間異なります。したがって、ミリ秒に変換してそれを差し引きます。

だからあなたに応じて最後に減算した数を変更します。私は製品を作成しています。つまり、インドのみに基づいているため、特定のタイムスタンプを使用しました。


1
なぜ受け入れられた答えの代わりにこれを提案するのですか?日時の値をローリングすることは、一般的に危険です。特に、このコードは、単一のタイムゾーンの現在のオフセットに永久にハードコードされます。夏時間やその他の異常の説明はありません。付加価値のない欠点のみが見られます。
バジルブルク2014年

@Basilはもちろん答えを受け入れます、そしてはい、ハードコードされた値のためにそこで言及しました。これは、特定のタイムゾーンで作業している場合にのみ役立ちます。
Rajeev 2014年

-1
Date todayMidnightUTC = java.sql.Date.valueOf(LocalDate.now());
Date tomorrowMidnightUTC = java.sql.Date.valueOf(LocalDate.now().plusDays(1));
Date anyMidnightLocal = java.sql.Date.valueOf(LocalDate.from(dateTime.toInstant().atZone(ZoneId.systemDefault())));

しかし、java.sql.Date.toInstant()常にスローすることに注意してくださいUnsupportedOperationException

経由してjava.util.DateにLOCALDATEおよびその逆の最も単純変換?


良い答えではありません。あなたは、現代のjava.timeの使用と、それらに取って代わる古いレガシークラスを混合しています。具体的には、java.timeクラスを直接使用するためにドライバーがまだ更新されていないデータベースとのデータ交換にのみ使用するjava.sql日時クラスを使用します。ビジネスロジックには使用しないでください。さらに別の問題は、タイムゾーンの重要な問題を無視することです。
バジルブルク2017年

@BasilBourque、批評をありがとう。非推奨としてマークされていない1つのレガシークラスを使用して、別のレガシークラスインスタンスを取得することは非常に安全です。タイムゾーンの問題はより重要です。結局リカルドの答えに固執することにした。
Vadzim 2017年

-1

昔ながらの方法

private static Date getDateWithMidnight(){
    long dateInMillis = new Date().getTime();
    return new Date(dateInMillis - dateInMillis%(1000*60*60*24) - TimeZone.getDefault().getOffset(dateInMillis));
}

その厄介なクラスは、年も前にjava.time.Instantクラスに取って代わられました。使用する必要はありませんDate
バジルブルク2018

そのDateクラスは常にUTCです。したがって、希望/予想されるタイムゾーンの問題を無視しています。たとえば、コルカタインドでは、UTCよりも数時間早く、モントリオールケベックではUTCよりも数時間後に新しい日が始まります。
バジルブルク2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.