[JAVA] Versuch und Irrtum, um nationale Feiertage in der Android-App-Entwicklung anzuzeigen. Teil 2

Vielen Dank! Das ist Yosuke. Ich kann mir keinen guten Titel vorstellen. W Es ist schwierig, einen einfachen, konkreten und schönen Titel zu haben (lacht). Ich denke, es ist ein bisschen anders als in Blogs, und wie ich und der Inhalt werde ich mein Bestes geben, damit es sich gut anfühlt!

Teil 1 erläuterte die Daten der Nationalfeiertage. Im zweiten Teil werde ich die Denkweise beim Zusammenstellen des Quellcodes (obwohl ich zeige, dass ich so gedacht habe ...), den Quellcode und einige Nachteile vorstellen, also werde ich sie auch vorstellen. Ich werde. Als Rückblick auf den ersten Teil werde ich die Feiertage und Bemerkungen erneut veröffentlichen.

Feiertagsname Datum Bemerkungen
Neuer Tag 1. Januar -
Erwachsenentag Zweiter Montag im Januar -
Gründungstag 11. Februar -
Geburtstag des Kaisers 23. Februar -
Vernal Equinox Day Einer vom 19. bis 22. März Bestimmen Sie das Datum durch den Rest der Division des Jahres durch 4
Showa Tag 29. April -
Verfassungsjubiläum 3. Mai -
Grüner Tag 4. Mai -
Kindertag 5. Mai -
Seetag Dritter Montag im Juli 23. Juli 2020
Bergtag 11. August 10. August 2020
Keiro Tag Dritter Montag im September -
Herbsttag 1 von 22-24 Tagen im September Bestimmen Sie das Datum durch den Rest der Division des Jahres durch 4
Sporttag Zweiter Montag im Oktober 24. Juli 2020
Kulturtag 3. November -
Labor Thanksgiving Day 23. November -

--Denken

Denkweise

Bevor ich den Quellcode schreibe, werde ich meine Gedanken erklären. Der erste, der verwendet wird, ist die ** Kalenderklasse **. Auf diese Weise können Sie das Jahr, den Monat, den Tag, den Tag und die Woche abrufen und die Feiertage entsprechend einstellen. Das ist natürlich (lacht). Ich verwende die Datenbank, weil ich in TextView unterstrichene Feiertage anzeigen und auf tippen möchte, um Details in einem Dialogfeld anzuzeigen.

id name detail adress
1 Neuer Tag Ein Jahr... https....
2 Erwachsenentag Zum Urlaubsgesetz... https...
... ... ... ...
15 Kulturtag Vom Meiji-Kaiser... https...
16 Labor Thanksgiving Day In der Reiwa-Ära... https....

Ich habe es in der Mitte weggelassen, aber jedem Feiertag eine ID zugewiesen und den Feiertag und seine Details basierend auf dieser ID angezeigt ... Hmm holiday.PNG ↑ Verstehst du das so ... Entschuldigung für die schlechte Erklärung m (..) m Als nächstes folgt der Transferfeiertag, dies ist jedoch auch eine Datenbank mit nur ID und Flag

id flag
100 0

Wenn ein Feiertag am Sonntag kommt, setzen Sie das Flag auf 1 und setzen Sie es auf 0 zurück, wenn dieser Tag ein Transferfeiertag ist. Ich mache so etwas. Deshalb gibt es Nachteile ...

Quellcode

Der Quellcode ist unterteilt in Holiday.java, das die nationalen Feiertage bestimmt, DateDatabeseHelper.java in der Datenbank und MainActivity.java, das die Hauptfeiertage ist.

Holiday.java


public class Holiday {
    //Holen Sie sich das heutige Datum, Tag, Jahr, Woche
    int year,month,day,youbi,week;
    Calendar calendar = Calendar.getInstance();
    //Datenbank
    DateDatabaseHelper helper = null;
    //Bestimmen Sie, ob nationale Feiertage angezeigt werden sollen
    boolean holidayFlag;
    //Holen Sie sich den Namen, Details und ID des Urlaubs
    String holidayName,holidayDetail;
    int id;
    //Richter Transfer Urlaub
    boolean transHolidayFlag;


    public void holiday(){
        year = calendar.get(Calendar.YEAR); //Jahr
        month = calendar.get(Calendar.MONTH) + 1; //Mond
        day = calendar.get(Calendar.DAY_OF_MONTH); //Tag
        youbi = calendar.get(Calendar.DAY_OF_WEEK); //Tag
        week = calendar.get(Calendar.WEEK_OF_MONTH); //Woche
        if(month == 1 && day == 1){
            //Neuer Tag
            id = 1;
            holidayFlag = true;
        }
        else if(month == 1 && week == 2 && youbi == 2){
            //Erwachsenentag
            id = 2;
            holidayFlag = true;
            }
        else if(month == 2 && day == 11){
            //Gründungstag
            id = 3;
            holidayFlag = true;
        }
        else if(month == 2 && day == 23){
            //Geburtstag des Kaisers
            id = 4;
            holidayFlag = true;
        }
        else if(month == 3){
            //Vernal Equinox Day
            switch (year % 4){
                case 0:
                    //1992-20 Tage bis 2091
                    if(year >= 1992 && year <= 2091){
                        if(day == 20){
                            id = 5;
                            holidayFlag = true;
                        }
                        else {
                            holidayFlag = false;
                        }
                    }
                    //2092-19 Tage bis 2099
                    else{
                        if(day == 19){
                            id = 5;
                            holidayFlag = true;
                        }
                        else {
                            holidayFlag = false;
                        }
                    }
                    break;
                case 1:
                    //1992-20 Tage bis 2099
                    if(day == 20){
                        id = 5;
                        holidayFlag = true;
                    }
                    else {
                        holidayFlag = false;
                    }
                    break;
                case 2:
                    //1992-21 Tage bis 2023
                    if(year >= 1992 && year <= 2023){
                        if(day == 21){
                            id = 5;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    //2024-20 Tage bis 2099
                    else{
                        if(day == 20){
                            id = 5;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    break;
                case 3:
                    //1992-21 Tage bis 2055
                    if(year >= 1992 && year <= 2055){
                        if(day == 21){
                            id = 5;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    //2056-20 Tage bis 2099
                    else{
                        if(day == 20){
                            id = 5;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    break;
            }
        }
        else if(month == 4 && day == 29){
            //Showa Tag
            id = 6;
            holidayFlag = true;
        }
        else if(month == 5 && day == 3){
            //Verfassungsjubiläum
            id = 7;
            holidayFlag = true;
        }
        else if(month == 5 && day == 4){
            //Grüner Tag
            id = 8;
            holidayFlag = true;
        }
        else if(month == 5 && day == 5){
            //Kindertag
            id = 9;
            holidayFlag = true;
        }
        else if(year != 2020 && month == 7 && week == 3 && youbi == 2){
            //Seetag
            id = 10;
            holidayFlag = true;
        }
        else if(year == 2020 && month == 7 && day == 23){
            //Der Seetag bewegt sich erst im Jahr 2020
            id = 10;
            holidayFlag = true;
        }
        else if(year != 2020 && month == 8 && day == 11){
            //Bergtag
           id = 11;
           holidayFlag = true;
        }
        else if(year == 2020 && month == 8 && day == 10){
            //Bergtage bewegen sich erst im Jahr 2020
            id = 11;
            holidayFlag = true;
        }
        else if(month == 9 && week == 3 && youbi == 2){
            //Keiro Tag
            id = 12;
            holidayFlag = true;
        }
        else if(month == 9){
            //Herbsttag
            switch (year % 4){
                case 0:
                    //2012-22 Tage bis 2099
                    if(day == 22){
                        id = 13;
                        holidayFlag = true;
                    }
                    else {
                        holidayFlag = false;
                    }
                    break;
                case 1:
                    //2012-23 Tage bis 2043
                    if(year >= 2012 && year <= 2043){
                        if(day == 23){
                            id = 13;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    //2044-22 Tage bis 2099
                    else{
                        if(day == 22){
                            id = 13;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    break;
                case 2:
                    //2012-23 Tage bis 2075
                    if(year >= 2012 && year <= 2075){
                        if(day == 23){
                            id = 13;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    //2076-22 Tage bis 2099
                    else{
                        if(day == 22){
                            id = 13;
                            holidayFlag = true;
                        }
                        else{
                            holidayFlag = false;
                        }
                    }
                    break;
                case 3:
                    //2012-23 Tage bis 2099
                    if(day == 23){
                        id = 13;
                        holidayFlag = true;
                    }
                    else{
                        holidayFlag = false;
                    }
                    break;
            }
        }
        else if(year != 2020 && month == 10 && week == 2 && youbi == 2){
            //Sporttag
            id = 14;
            holidayFlag = true;
        }
        else if(year == 2020 && month == 7 && day == 24){
            //Der Sporttag wird erst im Jahr 2020 verschoben
            id = 14;
            holidayFlag = true;
        }
        else if(month == 11 && day == 3){
            //Kulturtag
            id = 15;
            holidayFlag = true;
        }
        else if(month == 11 && day == 23){
            //Labor Thanksgiving Day
            id = 16;
            holidayFlag = true;
        }
        else{
            holidayFlag = false;
        }
        }
        //Übergeben Sie an main, ob es ein Feiertag ist oder nicht
    public boolean getHoliday(){
        return holidayFlag;
    }
    //ID an main übergeben
    public int holiday_info(){
       return id;
    }
    //Übergabe an main, wenn am Sonntag Feiertage sind
    public boolean getTransferHoliday(){
        //Wenn es ein Feiertag ist und dieser Tag Sonntag ist
        if(holidayFlag == true && youbi == 1){
            transHolidayFlag = true;
        }
        else{
            transHolidayFlag = false;
        }
        return transHolidayFlag;
    }
}

Obwohl es überflüssig ist, besteht die Grundlage darin, zu beurteilen, ob der Tag ein Feiertag ist und ob es am Sonntag einen Feiertag gibt, und das Urteilsergebnis an Main weiterzuleiten.

DateDatabaseHelper.java


public class DateDatabaseHelper extends SQLiteOpenHelper {
    static final private String DBNAME = "OneDayDiary.sqlite";
    static final private int VERSION = 16;

    public DateDatabaseHelper(Context context) {
        super(context, DBNAME, null, VERSION);
    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
----Unterlassung-----
//Urlaubsdatenbank
        db.execSQL("CREATE TABLE holiday(" +
                "id INTEGER PRIMARY KEY, name TEXT, detail TEXT, adress TEXT)");
        int[] id_holiday = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        String[] name_holiday = {
                "Neuer Tag","Erwachsenentag","Gründungstag","Geburtstag des Kaisers","Vernal Equinox Day","Showa Tag","Verfassungsjubiläum","Grüner Tag","Kindertag",
                "Seetag","Bergtag","Keiro Tag","Herbsttag","Sporttag","Kulturtag","Labor Thanksgiving Day"
        };
        String[] detail_holiday = {
                "Es ist ein Feiertag zu Beginn des Jahres, und das Feiertagsgesetz zielt darauf ab, "den Beginn des Jahres zu feiern".",
                        "Gemäß dem National Holiday Law finden an verschiedenen Orten an diesem Tag Zeremonien für Erwachsene statt, um "einen jungen Mann zu feiern, der sich bewusst ist, dass er erwachsen ist und versucht, sich selbst zu überleben".",
                        "Es wurde als ein Tag gegründet, um die Gründung des Landes zu feiern. Das Urlaubsgesetz schreibt vor: "Wir werden das Land weiterhin etablieren und die Liebe zum Land pflegen."",
                        ""Die Geburt des Kaisers feiern" ist das Ziel des Feiertagsgesetzes, und verschiedene Veranstaltungen wie das Tencho-Festival finden an verschiedenen Orten in allgemeinen Schreinen und Shinto-Schreinen statt.",
                        "Das Urlaubsgesetz schreibt vor, dass "die Natur gelobt und für Lebewesen gesorgt wird", und es wird gesagt, dass die Länge von Tag und Nacht gleich ist.",
                        "Dieser Tag, der der Geburtstag von Kaiser Showa ist, wurde als "Showa-Tag" festgelegt. Das Feiertagsgesetz sieht vor, dass "wir nach den turbulenten Tagen auf die rekonstruierte Showa-Ära zurückblicken und über die Zukunft des Landes nachdenken".",
                        "Das Feiertagsgesetz sieht vor, dass dieser Tag "zum Gedenken an die Durchsetzung der Verfassung Japans und zur Förderung des Wachstums des Landes" dienen soll.",
                        "Der Ursprung des Namens ist "Grüner Tag", weil Kaiser Showa die Natur liebte. Es gab andere Meinungen wie "Science Day". Nach dem Feiertagsgesetz besteht der Zweck darin, "der Natur nahe zu kommen, ihre Vorteile zu schätzen und ein reiches Herz zu pflegen".",
                        "Der Zweck dieses Tages, der ein Fest am Ende des Tages ist, ist im Feiertagsgesetz festgelegt: "Wir schätzen die Menschenrechte von Kindern, streben nach ihrem Glück und danken ihren Müttern."",
                        "Laut dem National Holiday Law möchte Sea Day "Ihnen für die Vorteile des Meeres danken und den Wohlstand Japans, eines Meereslandes, wünschen".",
                        "Dieser Tag wurde 2014 gegründet und 2016 neu gegründet. Dies ist der erste neue Feiertag seit 20 Jahren seit dem "Sea Day" im Jahr 1996. Ziel des Urlaubsgesetzes ist es, "die Möglichkeit zu geben, die Berge kennenzulernen und die Vorteile der Berge zu schätzen".",
                        "Das Urlaubsgesetz zielt darauf ab, "die alten Menschen, die seit vielen Jahren in der Gesellschaft sind, zu respektieren und ihre Langlebigkeit zu feiern".",
                        "Es wird gesagt, dass die Tageszeit verkürzt wird und die Länge von Tag und Nacht gleich ist. Der Zweck des Urlaubsgesetzes ist es, "die Vorfahren zu respektieren und die Verlorenen zu trauern".",
                        "Ab 2020 wurde der Name von "Sporttag" in "Sporttag" geändert. Im Jahr 2020 wird es am 24. Juli umziehen. Das Urlaubsgesetz besagt, dass "Flecken im Sport und die Erhaltung eines gesunden Geistes und Körpers".",
                        "An diesem Tag, dem Geburtstag von Kaiser Meiji, soll laut Feiertagsgesetz "Freiheit und Frieden geliebt und Kultur gefördert werden".",
                        "In der Reiwa-Ära ist dieser Tag der letzte Feiertag des Jahres. Der Zweck des Urlaubsgesetzes ist es, "hart zu arbeiten, die Produktion zu feiern und sich gegenseitig zu danken"."
        };
        String[] url_holiday = {
                "https://ja.wikipedia.org/wiki/%E5%85%83%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%88%90%E4%BA%BA%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E5%BB%BA%E5%9B%BD%E8%A8%98%E5%BF%B5%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E5%A4%A9%E7%9A%87%E8%AA%95%E7%94%9F%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%98%A5%E5%88%86%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%98%AD%E5%92%8C%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%86%B2%E6%B3%95%E8%A8%98%E5%BF%B5%E6%97%A5_(%E6%97%A5%E6%9C%AC)",
                        "https://ja.wikipedia.org/wiki/%E3%81%BF%E3%81%A9%E3%82%8A%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E3%81%93%E3%81%A9%E3%82%82%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%B5%B7%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E5%B1%B1%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%95%AC%E8%80%81%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E7%A7%8B%E5%88%86%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E4%BD%93%E8%82%B2%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E6%96%87%E5%8C%96%E3%81%AE%E6%97%A5",
                        "https://ja.wikipedia.org/wiki/%E5%8B%A4%E5%8A%B4%E6%84%9F%E8%AC%9D%E3%81%AE%E6%97%A5"
        };
        db.beginTransaction();
        try{
            SQLiteStatement sql_holiday = db.compileStatement(
                    "INSERT INTO holiday(id, name, detail, adress) VALUES(?,?,?,?)");
            for(int i = 0; i < id_holiday.length; i++){
                sql_holiday.bindLong(1,id_holiday[i]);
                sql_holiday.bindString(2,name_holiday[i]);
                sql_holiday.bindString(3,detail_holiday[i]);
                sql_holiday.bindString(4,url_holiday[i]);
                sql_holiday.executeInsert();
            }
            db.setTransactionSuccessful();
        } catch (SQLException e){
            e.printStackTrace();
        } finally {
            db.endTransaction();
        }
        db.execSQL("CREATE TABLE transHoliday(" +
                "id INTEGER PRIMARY KEY, flag INTEGER)");
        db.execSQL("INSERT INTO transHoliday(" +
                "id, flag) VALUES(100,0)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int old_v, int new_v) {
        db.execSQL("DROP TABLE IF EXISTS holiday");
        db.execSQL("DROP TABLE IF EXISTS transHoliday");
        onCreate(db);

    }


}   

In der Datenbank werden Daten zu Feiertagen und nur Ein / Aus-Übertragungsfeiertagen im Voraus vorbereitet. Ich denke übrigens, der Grund, warum die URL als Daten eingegeben wird, kann auf einem anderen Bildschirm verwendet werden. Die URL enthält nicht nur diesen Feiertag, sondern auch Informationen über Fukuoka und die URL des Jahrestages des Tages.

MainActivity.java


public class MainActivity extends AppCompatActivity{
//Bereit, Datum und Tag anzuzeigen
    private TextView today;
    Calendar calendar = Calendar.getInstance();
    int year,month,day;

---Unterlassung---

//Nationalfeiertage
    private TextView holiday;
    String holidayName,holidayDetail; //Feiertagsname und Details
    boolean holidayFlag,transHolidayFlag; //Ob es Feiertage und Transferferien gibt
    int holidayId; //ID für die Suche in DB
    long transHoliday = 0; //Feiertagsflagge übertragen
    Holiday Hday = new Holiday(); //Ferienklasse

---Unterlassung---

//Bereit, eine Verbindung zur Datenbank herzustellen
    private DateDatabaseHelper helper = null;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Deklaration jedes Widgets

---Unterlassung---

 holiday = findViewById(R.id.holiday);

---Unterlassung---

//Holen Sie sich das heutige Datum
        year = calendar.get(calendar.YEAR);
        month = calendar.get(calendar.MONTH) + 1;
        day = calendar.get(calendar.DAY_OF_MONTH);

---Unterlassung---

    //Nationalfeiertage
        //Führen Sie die Urlaubsmethode aus
        Hday.holiday();
        //Feststellen, ob es einen Feiertag gibt
        holidayFlag = Hday.getHoliday();
        //Holen Sie sich das Vorhandensein oder Fehlen von Transferferien
        transHolidayFlag = Hday.getTransferHoliday();
        //Urlaubs-ID übertragen
        String[] transHdayId = {"100"};
        //Aktualisieren Sie das DB-Flag auf 1, wenn transHolidayFlag true ist

            SQLiteDatabase db_transUp1 = helper.getWritableDatabase();
            try{
                if(transHolidayFlag == true) {
                ContentValues cv_transUp1 = new ContentValues();
                cv_transUp1.put("flag",1);
                db_transUp1.update("transHoliday",cv_transUp1,"id = ?",transHdayId);
                }
                Cursor cursor_transUp1 = db_transUp1.rawQuery("select flag from transHoliday",null);
                cursor_transUp1.moveToFirst();
                transHoliday = cursor_transUp1.getLong(0);
            } finally {
                db_transUp1.close();
            }


        if(holidayFlag == true){
            //Holen Sie sich Namen und Details, wenn es einen Urlaub gibt
           holidayId = Hday.holiday_info();
            SQLiteDatabase db_holiday = helper.getWritableDatabase();
            try{
                Cursor cursor_holiday = db_holiday.query(
                        "holiday",
                        new String[] {"name","detail"},
                        "id = ?",
                        new String[] {"" + holidayId},
                        null,
                        null,
                        null
                );
                cursor_holiday.moveToFirst();
                holidayName = cursor_holiday.getString(0);
                holidayDetail = cursor_holiday.getString(1);
                //Feiertagsname unterstreichen
                SpannableString uHoliday = new SpannableString(holidayName);
                uHoliday.setSpan(new UnderlineSpan(),0,holidayName.length(),0);
                holiday.setText(uHoliday);
                //Machen Sie die Buchstaben des Tages rot
                day_of_the_week.setTextColor(Color.RED);
            } finally {
                db_holiday.close();
            }
        }
        else if(transHoliday == 1 && holidayFlag == false ){
            //Wenn die Transferfeiertagsflagge wahr und die Nationalfeiertagsflagge ebenfalls falsch ist, ist dieser Tag ein Transferfeiertag
            holiday.setText("Transfer Urlaub");
            holidayDetail = "Heute ist ein Transferurlaub";
            //Setzen Sie das DB-Übertragungsfeiertagsflag auf 0 zurück
            SQLiteDatabase db_transUp2 = helper.getWritableDatabase();
            try{
                ContentValues cv_transUp2 = new ContentValues();
                cv_transUp2.put("flag",0);
                db_transUp2.update("transHoliday",cv_transUp2,"id = ?",transHdayId);
            } finally {
                db_transUp2.close();
            }
        }
        else{
            //Nicht anzeigen, wenn es kein Feiertag ist
            holiday.setText("");
        }
        //Details im Dialog anzeigen
        holiday.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle(holidayName);
                builder.setMessage(holidayDetail);
                builder.setCancelable(false);
                builder.setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        });
                builder.create().show();
            }
        });

---Unterlassung---

//onCreate ist da
    }
}

In Main werden Feiertage und Transferfeiertage basierend auf dem von Holiday.java empfangenen HolidayFlag und TransHolidayFlag beurteilt, und das Ein- und Ausschalten wird aus der Datenbank für Feiertage und der Datenbank für Transferfeiertage umgeschaltet. Da .setOnClickListener auch in TextView verwendet werden kann, tippen Sie auf den angezeigten Feiertagsnamen, um die Details in einem Dialogfeld anzuzeigen.

Ausführungsergebnis

Da der 23. Februar 2020 (Sonntag) nur der Geburtstag des Kaisers ist, habe ich versucht, mit dem Datum auf meinem Smartphone zu spielen. holidayExp1.png Wenn Sie links auf den roten Buchstaben "Geburtstag des Kaisers" tippen. holidayExp2.png Und Details können angezeigt werden. (Der blaue Buchstabe "Kaisergeburtstag" rechts muss ein weiterer Jahrestag sein ...) Und der nächste Montag ist ein Transferfeiertag, also werde ich es am 24. versuchen. transExp1.png Der Transferurlaub selbst muss nicht separat angezeigt werden, ist also nicht unterstrichen, aber wenn Sie vorerst darauf tippen transExp2.png Auf diese Weise wird "Heute ist ein Transferurlaub" angezeigt.

Nachteil

Die Definition eines Transferfeiertags lautete "Wenn es am Sonntag einen Feiertag gibt, ist der nächste Wochentag ein Transferfeiertag". Wir können die Nationalfeiertage beurteilen, weil wir die Zahlen kennen, aber wir haben entschieden, dass die Transferfeiertage Sonntage und Feiertage sind. Das Problem hier ist

  1. Sie können das Transferfeiertagsflag nur bestimmen, wenn Sie sich jeden Tag anmelden.
  2. Wenn der Transferfeiertag angezeigt wird, wird das Flag auf 0 gesetzt, sodass der Transferfeiertag beim Neustart nicht angezeigt wird.
  3. Wenn ein seltener Wochentag zwischen den Feiertagen liegt, ist es nicht möglich, diesen Tag als Feiertag zu behandeln Kann erwähnt werden. Ich denke viel nach, wenn ich diesen Artikel schreibe (lacht), aber 1 und 2 sind häufige Phänomene, die auftreten, weil das Flag 0 oder 0 wird. Ich kann es nur am Tag der Veranstaltung überprüfen, es ist also nicht nur der Grund für meine Sorgen, sondern die Blumen blühen (lacht). Es scheint gelöst zu sein und es ist schwer herauszukommen ... Oh, bitte vergib Muster 3 ... (Es dauerte eine Stunde, um die Fehler zu kratzen ...)

An Feiertagen sollte es gut funktionieren! Nun, es ist überflüssig (lacht). Nun, vorerst werde ich noch einmal berichten, wenn es den Anschein hat, dass der Transferurlaub gelöst werden kann, indem Sie so weitermachen, wie er ist. gekimuzu ..

** Nachtrag ** Ich veröffentliche eine korrigierte Version, da die Verarbeitung am ○. Montag nicht korrekt war. →https://qiita.com/ysk75/items/278c52bf4052991eb99d

Verweise

Nationalfeiertage: https://ja.wikipedia.org/wiki/%E5%9B%BD%E6%B0%91%E3%81%AE%E7%A5%9D%E6%97%A5 Informationen zu Datum und Uhrzeit erhalten Sie unter https://www.javadrive.jp/start/calendar/index2.html

Recommended Posts

Versuch und Irrtum, um nationale Feiertage in der Android-App-Entwicklung anzuzeigen. Teil 2
Versuch und Irrtum, um nationale Feiertage in der Android-App-Entwicklung anzuzeigen. Teil 1
Android App, die Bilder aus der Galerie auswählt und anzeigt
So implementieren Sie eine einzeilige Anzeige von TextView in der Android-Entwicklung
Einführung in die Android App-Entwicklung 1 Installieren von JDK und Android Studio für Mac
Von Java nach C und von C nach Java in Android Studio
So zeigen Sie Fehlermeldungen auf Japanisch an
[Entwicklung von Android-Anwendungen] Anzeigen im Vollbildmodus (Benachrichtigungsleiste ausgeblendet)
Riot (Chat App) Entwicklung (Einstellungen) in Android Studio
Android App: Versuchen Sie, Ereignisse und Hörer zusammenzufassen
[In der Teamentwicklung] Fehler beim Wechsel in den Zweig eines anderen Mitglieds und beim Ausführen von Rails s [Rails]
Anfänger in der App-Entwicklung haben versucht, eine Android-Rechner-App zu erstellen
Implementierungsrichtlinie zum dynamischen Speichern und Anzeigen der Zeitzone in Rails
Gründe, Servlet und JSP in der Java-Entwicklung getrennt zu verwenden
So entwickeln und registrieren Sie eine Sota-App in Java
[Android] Probieren Sie den aus, der den in Spielen üblichen Effekt auf dem berührten Teil des Bildschirms anzeigt
iOS App Entwicklung: Timer App (2. Timer Anzeige)
Startschuss für die persönliche Entwicklung der Android-App
Einführung in die Android App-Entwicklung
ROS App Entwicklung auf Android
Was Anfänger in der Android-Entwicklung vor der Veröffentlichung der App in 2 Wochen getan haben
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Was ich in Java gelernt habe (Teil 1) Java-Entwicklungsablauf und Überblick
Quelle zur Anzeige des Zeichenarrays mit numberPicker in Android Studio (Java)
[Android] Konvertieren Sie Map in JSON mit GSON mit Kotlin und Java