Làm cách nào tôi có thể tăng một ngày một ngày trong Java?


562

Tôi đang làm việc với một ngày ở định dạng này : yyyy-mm-dd.

Làm thế nào tôi có thể tăng ngày này thêm một ngày?


10
Nếu bạn đang sử dụng Java 8 hoặc mới hơn, bạn có thể sử dụng api ngày / giờ mới. Xem câu trả lời này: stackoverflow.com/a/23910924/1115554
micha

4
DateTime mới (). plusDays (1) .toDate () ???
Pietro

Câu trả lời:


686

Một cái gì đó như thế này nên thực hiện các mẹo:

String dt = "2008-01-01";  // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1);  // number of days to add
dt = sdf.format(c.getTime());  // dt is now the new date

50
@Esko, c.roll (Lịch.DATE, đúng) sẽ không quay tháng vào ngày cuối cùng của tháng.
Sam Hasler

18
@Ammar đó là một ý tưởng tồi nếu bạn không hiểu một điều
niccolo m.

13
Tôi sẽ trích dẫn một số JavaDocs ... Lịch.DATE: "... Đây là từ đồng nghĩa với DAY_OF_MONTH." Tôi muốn JavaDocs sẽ làm rõ rằng điều này sẽ tăng các trường lớn hơn (như tháng và năm). Calendar.roll "Thêm hoặc bớt (tăng / giảm) một đơn vị thời gian trên trường thời gian nhất định mà không thay đổi trường lớn hơn" .. Một lần nữa, "trường lớn hơn" mơ hồ nhưng có vẻ phù hợp với nhận xét của Sam. Tôi ước có một StackOverflow để sửa lỗi JavaDocs cũ.
jcalfee314

4
thật không may, thật vô ích khi thêm ngày sử dụng DATE, DAY_OF_MONTH hoặc thậm chí DAY_OF_YEAR - tất cả đều được tăng theo mô-đun. Vì vậy, xem xét Lịch ngày 31-12-1970, thêm (DAY_OF_YEAR, 1) hoặc roll (), tuy nhiên roll () cuối cùng gọi add (), sẽ cung cấp cho 01-01-1970. Tôi đoán cách duy nhất đúng là đặt thời gian với mili giây. Đối với tôi, tôi không bao giờ sử dụng lớp Lịch nữa.
Dmitry Gryazin

14
@Bagzerg: Bạn sai rồi . add()sẽ cuộn ngày. Xem trên ideone .
Jean Hominal

212

Java dường như đứng sau tám quả bóng so với C #. Phương thức tiện ích này chỉ ra cách thực hiện trong Java SE 6 bằng cách sử dụng phương thức Calendar.add (có lẽ là cách dễ dàng duy nhất).

public class DateUtil
{
    public static Date addDays(Date date, int days)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, days); //minus number would decrement the days
        return cal.getTime();
    }
}

Để thêm một ngày, mỗi câu hỏi được hỏi, hãy gọi nó như sau:

String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);

4
FYI, người già lớp ngày thời gian khủng khiếp phiền hà như java.util.Date, java.util.Calendarjava.text.SimpleDateFormatbây giờ là di sản , thay thế bởi sự java.time class built vào Java 8 và sau đó. Xem Hướng dẫn của Oracle .
Basil Bourque

80

java.time

Trên Java 8 trở lên, gói java.time làm cho điều này khá tự động. ( Hướng dẫn )

Giả sử Stringđầu vào và đầu ra:

import java.time.LocalDate;

public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}

3
FYI, cả ZonedDateDateTimeOffsetDateTimecũng có plusDaysminusDaysphương pháp cũng nhưLocalDate
Basil Bourque

@BasilBourque Chắc chắn, nhưng thông tin có sẵn trong câu hỏi là của a LocalDate.
Daniel C. Sobral

2
@DanielCSobral Yep. Chỉ cần thêm các liên kết để chỉnh sửa độc giả của bạn. Không phải là một lời chỉ trích.
Basil Bourque

65

Tôi thích sử dụng DateUtils từ Apache. Kiểm tra http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . Nó rất hữu ích đặc biệt là khi bạn phải sử dụng nó nhiều nơi trong dự án của bạn và không muốn viết một phương thức lót cho việc này.

API nói:

addDays (Ngày ngày, số tiền int): Thêm một số ngày vào một ngày trả về một đối tượng mới.

Lưu ý rằng nó trả về một đối tượng Date mới và không thay đổi đối tượng trước đó.


59
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );

48

Xây dựng một đối tượng Lịch và sử dụng phương thức add (Calendar.DATE, 1);


43

Hãy xem Joda-Time ( https://www.joda.org/joda-time/ ).

DateTimeFormatter parser = ISODateTimeFormat.date();

DateTime date = parser.parseDateTime(dateString);

String nextDay = parser.print(date.plusDays(1));

3
Bạn có thể xóa các cuộc gọi trình phân tích cú pháp để xây dựng DateTime. Sử dụng DateTime ngày = DateTime mới (dateString); Sau đó, nextDay là ISODateTimeFormat.date (). Print (date.plusDays (1)); Xem joda-time.sourceforge.net/api-release/org/joda/time/ khuyên để biết thêm.
MetroidFan2002

Để biết thêm ví dụ mã sử dụng Joda-Time, hãy xem câu trả lời của tôi cho một câu hỏi tương tự, Làm thế nào để thêm một ngày vào một ngày? .
Basil Bourque

2
FYI Ngày Dự án Joda-Time hiện đang ở chế độ bảo trì và khuyên nên chuyển sang các lớp java.time . Cả hai nỗ lực đều được dẫn dắt bởi cùng một người đàn ông, Stephen Colebourne. Vì vậy, họ chia sẻ các khái niệm tương tự, và di chuyển không khó.
Basil Bourque

40

Xin lưu ý rằng dòng này thêm 24 giờ:

d1.getTime() + 1 * 24 * 60 * 60 * 1000

nhưng dòng này thêm một ngày

cal.add( Calendar.DATE, 1 );

Vào những ngày có sự thay đổi thời gian tiết kiệm ánh sáng ban ngày (25 hoặc 23 giờ), bạn sẽ nhận được kết quả khác nhau!


40

Java 8 đã thêm một API mới để làm việc với ngày và giờ.

Với Java 8, bạn có thể sử dụng các dòng mã sau:

// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");

// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);

1
Tôi đoán bạn có nghĩa là januaryFirst.plusDays(1)không date.plusDays(1).
TeWu

Điều này chỉ được hỗ trợ trên android O developer.android.com/reference/java/time/package-summary.html
Subho

1
@Subho Dành cho Android trước 26 tuổi, hãy xem dự án ThreeTenABP thích ứng với dự án ThreeTen-Backport , một cổng sau nếu hầu hết các chức năng thời gian java cho Java 6 và Java 7.
Basil Bourque

29

bạn có thể sử dụng lib java.util đơn giản

Calendar cal = Calendar.getInstance(); 
cal.setTime(yourDate); 
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();

1
Câu trả lời này trùng lặp nội dung của nhiều Câu trả lời bao gồm Câu trả lời được chấp nhận từ ba năm trước. Vui lòng xóa Câu trả lời của bạn hoặc chỉnh sửa để thêm giá trị.
Basil Bourque

3
Câu trả lời này sạch hơn, không phân tích ngày ở giữa. "câu trả lời được chấp nhận" quá phức tạp. thật tốt khi bạn thêm bạn, bỏ qua nhận xét tự động của húng quế
Mickey Perlstein

FYI, người già lớp ngày thời gian khủng khiếp phiền hà như java.util.Date, java.util.Calendarjava.text.SimpleDateFormatbây giờ là di sản , thay thế bởi sự java.time class built vào Java 8 và sau đó. Xem Hướng dẫn của Oracle .
Basil Bourque

Câu trả lời hay nhất, đi thẳng vào vấn đề. Tôi đồng ý với Mickey, chỉ cần bỏ qua bình luận của húng quế
eramirez75

23
Date today = new Date();               
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyyMMdd");            
Calendar c = Calendar.getInstance();        
c.add(Calendar.DATE, 1);  // number of days to add      
String tomorrow = (String)(formattedDate.format(c.getTime()));
System.out.println("Tomorrows date is " + tomorrow);

Điều này sẽ cung cấp cho ngày mai. c.add(...)các tham số có thể được thay đổi từ 1 sang số khác để tăng dần.


1
bạn có thể làm một cái gì đó như c.setTime (đối tượng Ngày) để đặt Ngày cụ thể trước khi thêm.
Linh Lino

Tôi ước các gói java mặc định sẽ giúp việc xử lý ngày trở nên ít phức tạp hơn ... Ý tôi là đó là một nỗi đau mỗi khi bạn muốn xử lý ngày ... chỉ là một
cơn thịnh nộ

1
@Shn_Android_Dev Các lớp java.time được tích hợp vào Java 8 và sau đó thay thế các lớp thời gian cũ khủng khiếp và trả lời mong muốn của bạn. Đồng thời được chuyển sang Java 6/7 và Android trước đó trong các dự án ThreeTen-BackportThreeTenABP . Không cần phải sử dụng Datehoặc Calendarmột lần nữa.
Basil Bourque

19

Nếu bạn đang sử dụng Java 8 , thì hãy làm như thế này.

LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27);  // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format

String destDate = destDate.format(formatter));  // End date

Nếu bạn muốn sử dụng SimpleDateFormat , thì hãy làm như thế này.

String sourceDate = "2017-05-27";  // Start date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar

calendar.add(Calendar.DATE, 1);  // number of days to add
String destDate = sdf.format(calendar.getTime());  // End date

Không, Câu hỏi yêu cầu giá trị chỉ ngày không phải là ngày. Vì vậy, sử dụng các LocalDatelớp không LocalDateTime.
Basil Bourque

1
Câu trả lời của bạn lặp lại nội dung của ít nhất bốn Câu trả lời khác. Vui lòng giải thích làm thế nào giá trị của bạn tăng thêm ngoài giá trị đó, nếu không sẽ xóa trước khi bạn thu thập phiếu bầu.
Basil Bourque

16
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);

Việc này lấy số mili giây kể từ epoch từ oldDate và thêm giá trị 1 mili giây sau đó sử dụng hàm tạo công khai Date () để tạo ngày bằng giá trị mới. Phương pháp này cho phép bạn thêm 1 ngày, hoặc bất kỳ số giờ / phút, không chỉ cả ngày.


Đây có lẽ không phải là điều OP muốn; nó không thực hiện bất kỳ khoản trợ cấp nào cho các điều chỉnh loại Tiết kiệm ánh sáng ban ngày, giây nhảy vọt, v.v.
mrec

1
Tiết kiệm ánh sáng ban ngày nên được xử lý theo múi giờ / miền địa phương. Ví dụ của tôi là chỉ ra cách tăng theo thời lượng nhỏ. Khi tăng theo ngày, giây nhuận có thể là một vấn đề nhưng khi thêm giờ, nó ít có khả năng mặc dù vẫn có thể.
dvaey

15

Java 1.5 TimeUnit.DAYS.toMillis (1) có vẻ sạch sẽ hơn đối với tôi.

SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Date day = dateFormat.parse(string);
// add the day
Date dayAfter = new Date(day.getTime() + TimeUnit.DAYS.toMillis(1));

Điều này tạo ra một giá trị thời gian trong đó Câu hỏi chỉ yêu cầu một ngày. Tôi đề nghị một cách tiếp cận khôn ngoan hơn là LocalDatelớp trong các lớp java.time cho Java 8 trở lên và cổng sau cho Java 6 & Java 7 được tìm thấy trong dự án ThreeTen-Backport .
Basil Bourque


11

Trong java 8 bạn có thể sử dụng java.time.LocalDate

LocalDate parsedDate = LocalDate.parse("2015-10-30"); //Parse date from String
LocalDate addedDate = parsedDate.plusDays(1);   //Add one to the day field

Bạn có thể chuyển đổi thành java.util.Dateđối tượng như sau.

Date date = Date.from(addedDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

Bạn có thể LocalDatetạo thành một Chuỗi như sau.

String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

11

Nó rất đơn giản, cố gắng giải thích bằng một từ đơn giản. có được ngày hôm nay như dưới đây

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);

Bây giờ đặt trước một ngày với ngày này bằng phương thức calendar.add, phương thức này (không đổi, giá trị). Ở đây hằng số có thể là NGÀY, giờ, phút, giây, v.v. và giá trị là giá trị của hằng. Giống như trong một ngày, hằng số trước là Lịch.DATE và giá trị của nó là 1 vì chúng tôi muốn giá trị trước một ngày.

System.out.println(calendar.getTime());// print modified date which is ngày mai

Cảm ơn



7

Chỉ cần vượt qua ngày trong Chuỗi và số ngày tiếp theo

 private String getNextDate(String givenDate,int noOfDays) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        String nextDaysDate = null;
    try {
        cal.setTime(dateFormat.parse(givenDate));
        cal.add(Calendar.DATE, noOfDays);

       nextDaysDate = dateFormat.format(cal.getTime());

    } catch (ParseException ex) {
        Logger.getLogger(GR_TravelRepublic.class.getName()).log(Level.SEVERE, null, ex);
    }finally{
    dateFormat = null;
    cal = null;
    }

    return nextDaysDate;

}

7

Nếu bạn muốn thêm một đơn vị thời gian và bạn hy vọng rằng các trường khác cũng sẽ được tăng lên, bạn có thể sử dụng phương thức add một cách an toàn. Xem ví dụ dưới đây:

SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, -1);
System.out.println(simpleDateFormat1.format(cal.getTime()));

Sẽ in:

1970-12-31
1971-01-01
1970-12-31

Không có câu trả lời được chấp nhận và tôi cảm thấy có sự nhầm lẫn chung nếu các lĩnh vực khác được cập nhật.
thợ hàn

7
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender

4
Cảm ơn bạn đã muốn đóng góp. Tuy nhiên, điều này đã có trong một số câu trả lời khác, vì vậy tôi thực sự không thấy điểm nào Ngoài IMHO không ai nên sử dụng Calendarlớp lỗi thời được thiết kế kém và dài vào năm 2019.
Ole VV

6

Nếu bạn sử dụng Java SE 8 trở lên, bạn nên sử dụng API Ngày / Giờ mới

 int days = 7;       
 LocalDate dateRedeemed = LocalDate.now();
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");

 String newDate = dateRedeemed.plusDays(days).format(formatter);   
 System.out.println(newDate);

Nếu bạn phải chuyển đổi từ java.util.Datesang java.time.LocalDate, bạn có thể sử dụng phương pháp này.

  public LocalDate asLocalDate(Date date) {
      Instant instant = date.toInstant();
      ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
      return zdt.toLocalDate();
  }

Nếu bạn đang sử dụng phiên bản trước Java SE 8, tôi khuyên bạn nên sử dụng Joda-Time

Joda-Time cung cấp một sự thay thế chất lượng cho các lớp ngày và giờ Java và là thư viện ngày và giờ tiêu chuẩn thực tế cho Java trước Java SE 8

   int days = 7;       
   DateTime dateRedeemed = DateTime.now();
   DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/uuuu");

   String newDate = dateRedeemed.plusDays(days).toString(formatter);   
   System.out.println(newDate);

1
Mô hình của bạn cho java.timemột phần là không chính xác. Nó phải dd/MM/uuuutương đương với JodaTime.
TiiJ7

5

Sử dụng DateFormatAPI để chuyển đổi Chuỗi thành đối tượng Ngày, sau đó sử dụng CalendarAPI để thêm một ngày. Hãy cho tôi biết nếu bạn muốn các ví dụ mã cụ thể và tôi có thể cập nhật câu trả lời của mình.


3

Nếu bạn đang sử dụng Java 8 java.time.LocalDatejava.time.format.DateTimeFormattercó thể làm cho công việc này khá đơn giản.

public String nextDate(String date){
      LocalDate parsedDate = LocalDate.parse(date);
      LocalDate addedDate = parsedDate.plusDays(1);
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd");
      return addedDate.format(formatter); 
}

Thậm chí đơn giản hơn: Thả trình định dạng và chỉ sử dụng toString()để tạo chuỗi định dạng i yyyy-MM-dd (và nếu bạn khăng khăng, hãy nhớ rằng đó mmlà phút trong khi MMlà tháng).
Ole VV

3

Bạn có thể sử dụng gói này từ "org.apache.commons.lang3.time":

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date myNewDate = DateUtils.addDays(myDate, 4);
 Date yesterday = DateUtils.addDays(myDate, -1);
 String formatedDate = sdf.format(myNewDate);  

5
Đề xuất Datelớp học năm 2018 là lời khuyên kém. Các lớp thời gian cũ rắc rối như java.util.Date, java.util.Calendarjava.text.SimpleDateFormatbây giờ là di sản , được thay thế bởi các lớp java.time được tích hợp trong Java 8 & Java 9. Xem Hướng dẫn của Oracle . Xem câu trả lời khác bằng cách sử dụng LocalDatelớp.
Basil Bourque

Đúng vậy, LocalDate IS là cách tốt nhất để làm điều đó,
Shaheed

tuy nhiên, một số khung như jsf có một chút vấn đề tích hợp với API thời gian, vì vậy đôi khi bạn nên sử dụng Ngày; cộng với môi trường java <8
Lucke 27/07/18

1
@Lucke Hầu hết các chức năng của java.time đã được chuyển sang Java 6 & 7 trong dự án ThreeTen-Backport . Thích nghi hơn nữa với Android cũ hơn trong dự án ThreeTenABP . Vì vậy, thực sự không cần phải chạm vào những lớp thời gian cũ đẫm máu khủng khiếp đó. Nhiều khung đã được cập nhật. Nhưng không phải tất cả. Vì vậy, nếu bạn phải tương tác với mã cũ chưa được cập nhật lên java.time , hãy viết mã mới của bạn trong java.time và chuyển đổi sang / từ các loại cũ bằng cách gọi các phương thức chuyển đổi mới được thêm vào các lớp cũ.
Basil Bourque

1
Mã này bỏ qua vấn đề quan trọng của múi giờ . Đối với bất kỳ thời điểm nào, ngày thay đổi trên toàn cầu theo khu vực. Các SimpleDateFormatlớp không may tiêm một múi giờ, ngầm áp dụng khu vực mặc định hiện hành của JVM. Vì vậy, kết quả của mã này sẽ thay đổi tùy theo mặc định hiện tại là gì - và mặc định đó có thể thay đổi bất cứ lúc nào trong thời gian chạy.
Basil Bourque

3

Thật ra nó đơn giản. Một ngày chứa 86400000 mili giây. Vì vậy, trước tiên bạn có được thời gian hiện tại tính bằng mili từ Hệ thống bằng cách sử dụng System.currentTimeMillis()sau đó thêm 84000000 mili giây và sử dụng DateLớp để tạo định dạng ngày A cho mili giây.

Thí dụ

String Today = new Date(System.currentTimeMillis()).toString();

Chuỗi ngày hôm nay sẽ là 2019-05-9

String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();

Chuỗi Tommorow sẽ là 2019-05-10

String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();

Chuỗi ngàyAfterTommorow sẽ là 2019-05-11


Mã này sử dụng Datelớp khủng khiếp đã được thay thế từ nhiều năm trước bởi các lớp java.time hiện đại . Rất đơn giản để sử dụng đơn giản:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Basil Bourque

2

Hãy làm rõ trường hợp sử dụng: Bạn muốn thực hiện số học lịch và bắt đầu / kết thúc với java.util.Date .

Một số cách tiếp cận:

  1. Chuyển đổi thành chuỗi và quay lại với SimpleDateFormat : Đây là một giải pháp không hiệu quả.
  2. Chuyển đổi sang LocalDate : Bạn sẽ mất mọi thông tin thời gian trong ngày.
  3. Chuyển đổi sang LocalDateTime : Điều này bao gồm nhiều bước hơn và bạn cần lo lắng về múi giờ.
  4. Chuyển đổi sang epoch với Date.getTime () : Đây là hiệu quả nhưng bạn đang tính toán với mili giây.

Cân nhắc sử dụng java.time.Instant :

Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);

1
Không bao giờ trộn lẫn các lớp kế thừa khủng khiếp như Datevới các lớp java.time hiện đại như Instant. Các lớp java.time thay thế hoàn toàn các lớp kế thừa. Cụ thể, Instantthay thế java.util.Date.
Basil Bourque

1
Không giải quyết câu hỏi. Bạn đang sử dụng các lớp đại diện cho một khoảnh khắc (một ngày với thời gian trong ngày trong bối cảnh của một phần bù hoặc vùng). Nhưng Câu hỏi hỏi về ngày - chỉ không có thời gian - trong - ngày và không có múi giờ. Xem Câu trả lời đúng của Sobral và Trả lời đúng bởi micha.
Basil Bourque

0
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);

14
fyi, Date.setDate () không được dùng nữa
Kelly S. French

Trên máy tính của tôi, nó dường như hoạt động trên một biên giới tháng. Sau khi Sun Apr 30 16:25:33 CEST 2017đến Mon May 01 16:25:33 CEST 2017. Đó vẫn là một giải pháp nản lòng. Không chỉ là phương pháp không dùng nữa vì một lý do chính đáng, trong năm 2017 chúng tôi cũng có những lựa chọn thay thế rất tốt cho Datelớp học.
Ole VV
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.