강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

tn320님의 프로필 이미지
tn320

작성한 질문수

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

디데이어플에서 날짜계산이 안됩니다..

작성

·

210

·

수정됨

0

실행을 했는데 앱 꺼짐없이 실행은 잘되나

마지막 강의까지 듣고 코드를 수정했는데

갑자기 날짜 계산값이 다 0으로 출력됩니다.

어딘가 오류가 있는 듯 한데.. 못 찾겠네요. ㅠㅠ

 

package com.sunny.dday

import android.app.DatePickerDialog
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.DatePicker
import android.widget.TextClock
import android.widget.TextView
import androidx.annotation.RequiresApi
import java.time.Month
import java.util.Calendar
import java.util.GregorianCalendar
import java.util.concurrent.TimeUnit

class MainActivity : AppCompatActivity() {

    @RequiresApi(Build.VERSION_CODES.N)
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val startButton = findViewById<Button>(R.id.startBtn)
        val endButton = findViewById<Button>(R.id.endBtn)
        var startDate = ""
        var endDate = ""

        val calendar_start = Calendar.getInstance()
        val calendar_end = Calendar.getInstance()

        startButton.setOnClickListener {

            val today = GregorianCalendar()
            val year = today.get(Calendar.YEAR)
            val month = today.get(Calendar.MONTH)
            val day = today.get(Calendar.DATE)

            val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener {
                override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {

//                    startDate = "${year} + ${month+1} + ${dayofMonth}"
                    startDate = year.toString() + (month + 1).toString() + dayOfMonth.toString()

                    calendar_start.set(year, month + 1, dayOfMonth)

                    Log.d("day : ", startDate)

                }

            }, year, month, day)
            dlg.show()
        }

        endButton.setOnClickListener {
            val today = GregorianCalendar()
            val year = today.get(Calendar.YEAR)
            val month = today.get(Calendar.MONTH)
            val day = today.get(Calendar.DATE)

            val dlg = DatePickerDialog(this, object : DatePickerDialog.OnDateSetListener {
                override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {

//                    endDate = "${year} + ${month+1} + ${dayofMonth}"
                    endDate = year.toString() + (month + 1).toString() + dayOfMonth.toString()

                    calendar_end.set(year, month + 1, dayOfMonth)

                    val finalDate = TimeUnit.MICROSECONDS.toDays(calendar_end.timeInMillis - calendar_start.timeInMillis)

                    Log.d("day : ", endDate)

                    val textArea = findViewById<TextView>(R.id.finalDate)
                    textArea.setText(finalDate.toString())

                    Log.d("finalday : ", finalDate.toString())
                }
            }, year, month, day)

            dlg.show()
        }
    }
}

 

답변 1

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

xml 파일도 공유해주시면 저도 실행해보겠습니다!

tn320님의 프로필 이미지
tn320
질문자

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="D-Day Counter"
        android:textSize="20dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/imageView"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="50dp"
        android:scaleType="fitXY"
        android:src="@drawable/bg"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/finalDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="0 day"
        android:textSize="30sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="@+id/textView"
        app:layout_constraintVertical_bias="0.375"
        tools:layout_editor_absoluteX="0dp" />

    <Button
        android:id="@+id/startBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@drawable/radius"
        android:text="Start Date"
        android:textSize="15sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/endBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_marginBottom="4dp"
        android:background="@drawable/radius"
        android:text="D-day date"
        android:textStyle="bold"
        android:textSize="15sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
tn320님의 프로필 이미지
tn320
질문자

공유드립니다! 🙂

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

//                    val finalDate = TimeUnit.MICROSECONDS.toDays(calendar_end.timeInMillis - calendar_start.timeInMillis)
                    val finalDate = TimeUnit.MILLISECONDS.toDays(calendar_end.timeInMillis - calendar_start.timeInMillis)

위의 부분의 아래처럼 변경해보시겠어요?

tn320님의 프로필 이미지
tn320
질문자

아! 제가 잘못 작성했네요 ㅠㅠ

변경하니까 정상 동작하네요! 감사합니다!!!

 

tn320님의 프로필 이미지
tn320

작성한 질문수

질문하기