Advertisement
deyanivanov966

Exercise 4 04.03.2022-Календар-Дати МОЙ КОД

Mar 17th, 2022
1,627
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 6.76 KB | None | 0 0
  1. package com.example.exercise4
  2.  
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.view.View
  6. import android.widget.CalendarView
  7. import android.widget.EditText
  8. import android.widget.TextView
  9. import android.widget.Toast
  10. import androidx.core.view.isVisible
  11. import java.text.DateFormat
  12. import java.text.SimpleDateFormat
  13. import java.time.LocalDate
  14. import java.time.chrono.ChronoLocalDate
  15. import java.time.chrono.ChronoPeriod
  16. import java.time.format.DateTimeFormatter
  17. import java.time.temporal.ChronoUnit
  18. import java.util.*
  19.  
  20. class MainActivity : AppCompatActivity() {
  21.     override fun onCreate(savedInstanceState: Bundle?) {
  22.         super.onCreate(savedInstanceState)
  23.         setContentView(R.layout.activity_main)
  24.  
  25.         // Превключване между датите с изобразяване на новите в TextView
  26.         val cv=findViewById<CalendarView>(R.id.calendarView)             /* Връзка с CalendarView*/
  27.  
  28.         // В набалото да не се вижда
  29.         cv.isVisible=false
  30.         cv.setOnDateChangeListener { calendarView, year, month, day ->
  31.             val tv=findViewById<TextView>(R.id.textView)
  32.  
  33.             //tv.text= String.format("%d.%02d.%dг.",day,month+1,year)        /* Показване на дата формат 23.05.2022г. */
  34.  
  35.             //tv.text= String.format("%d.%02d.%dг.",day,month+1,year-2000)   /* Показване на дата формат 23.05.22г. */
  36.  
  37.             //tv.text= String.format("%d.%02d.%dг.",day,month+1,year%100)      /* Показване на дата формат 23.05.22г. */
  38.  
  39.             // ИЗЧИСЛЯВАНЕ на разликата в дати!
  40.             /* val d1=LocalDate.now()                                          /* Променлива показваща днескашна дата*/
  41.             val d2=LocalDate.of(year, month+1, day)                  /* Променлива текуща днескашна дата*/
  42.             tv.text=ChronoUnit.DAYS.between(d1,d2).toString()+" дни"    */   /* Функция изчисляваща разликите в датите*/
  43.  
  44.             // Изписване на ДАТА в  избраната ТЕКСТОВА КУТИЯ
  45.             val curr=this.currentFocus                                  /* АКТИВЕН КОНТРОЛ-Обекта curr е обектна променлива, която сочи елемента, който е фокусиран*/
  46.             if ( curr is EditText ) {                                   /* Проверка ако КОНТРОЛЪТ е EditText, тогава в него се извежда избраната дата*/
  47.                 val izbor= String.format("%d.%02d.%d",day,month+1,year)   /* На активният контрол му задаваме стойнот*/
  48.                 (curr as EditText).setText(izbor)         /* Поставяне на съдържанието в текстовата кутия*/
  49.  
  50.                 // Скриване на календара след избиране на дата в EditDateText поле
  51.                 cv.isVisible=false
  52.  
  53.             }
  54.         }
  55.         // Показване на календара след избиране на дата в EditDateText поле
  56.         findViewById<EditText>(R.id.editTextDate).setOnFocusChangeListener { view, b ->
  57.             cv.isVisible=true
  58.         }
  59.         // Показване на календара след избиране на дата в EditDateText2 поле
  60.         findViewById<EditText>(R.id.editTextDate2).setOnFocusChangeListener { view, b ->
  61.             cv.isVisible=true
  62.         }
  63.     }
  64.     fun btn_dnes(view: View) {                               /* Функция за проверка на БУТОНА ДНЕС*/
  65.         val tv=findViewById<TextView>(R.id.textView)         /* Връзка с TextView*/
  66.         val dnes=LocalDate.now()                             /* Вземаме днескашната дата*/
  67.  
  68.         // Дата по Американски тип-на обратно
  69.         //tv.text=dnes.toString()                            /* Функция извеждаща текущата ДАТА в TextView*/
  70.  
  71.         // Ден(int).име на месец(string).година(int)
  72.         //tv.text=dnes.dayOfMonth.toString()+"."+dnes.month+"."+dnes.year      /* Функция извеждаща текущата ДАТА като ДЕН-МЕСЕЦ-ГОДИНА в TextView*/
  73.  
  74.         // Ден(int).месец(int).година(int)
  75.         //tv.text=String.format("%2d.%02d.%4d",dnes.dayOfMonth,dnes.monthValue,dnes.year)
  76.  
  77.         /*// Ден(int).месец(int).година(int)
  78.         val frm=SimpleDateFormat("d.MM.yyyy")
  79.         val dnes2=Calendar.getInstance()
  80.         tv.text=frm.format(dnes2.time)    */
  81.  
  82.         /*
  83.         val frm=DateTimeFormatter.ofPattern("d.MM.yyyy")
  84.         tv.text=frm.format(dnes)      */
  85.  
  86.         // Дата формат 23 Сеп 2021
  87.         val imena= listOf("Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек")
  88.         tv.text=dnes.dayOfMonth.toString()+"."+ imena[dnes.monthValue-1]+"."+dnes.year
  89.  
  90.     }
  91.  
  92.     fun btn_razlika(view: View) {                       /* Функция за проверка на БУТОНА РАЗЛИКА*/
  93.         val ed1=findViewById<EditText>(R.id.editTextDate)           /* Връзка с първа EditText1 кутия*/
  94.         val ed2=findViewById<EditText>(R.id.editTextDate2)          /* Връзка с първа EditText2 кутия*/
  95.         if ( ed1.text.isEmpty() || ed2.text.isEmpty() )             /* Ако не са попълнени и двете полета*/
  96.             Toast.makeText(this, "Има невъведена дата", Toast.LENGTH_SHORT).show()    /* Извеждане на съобщение*/
  97.             else {
  98.                 val maska=DateTimeFormatter.ofPattern("d.MM.yyyy")
  99.                 val date1=LocalDate.parse(ed1.text,maska)         /* Преобразува съдържанието на date1 от text в стойност*/
  100.                 val date2=LocalDate.parse(ed2.text,maska)         /* Преобразува съдържанието на date2 от text в стойност*/
  101.                 val tv=findViewById<TextView>(R.id.textView)
  102.                 tv.text=ChronoUnit.DAYS.between(date1,date2).toString()
  103.         }
  104.     }
  105.     // Изчисляване на колко дни има до края на семестъра
  106.     fun btn_zad(view: View) {
  107.         val tv=findViewById<TextView>(R.id.textView)
  108.         val dnes=LocalDate.now()
  109.         val kam=LocalDate.of(2022, 4, 18)
  110.         tv.text="до "+kam.toString()+" остават"+ChronoUnit.DAYS.between(dnes,kam).toString()+" дни"
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement