Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
anton_rynkovoy
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 14
#1

Как ввести свою дату в андроид - Android

04.09.2016, 22:26. Просмотров 323. Ответов 12
Метки нет (Все метки)

Добрый вечер.
Задача такая: нужно ввести дату (например дня рождения) и посчитать сколько прошло дней, то бишь сколько дней живешь.
План такой: текущую дату перевожу в миллисекунды, дату рождения перевожу в миллисекунды, вычитаю и перевожу в дни.

Вопрос: как ввести свою дату?) Никак не могу понять)

Пробовал таким образом вставлять дату и переводить в миллисекунды, но результат выдает неправильный.

Java
1
2
3
4
String date = "23.01.2015";
                    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
                    Date myDate = dateFormat.parse(date);
                    long d = myDate.getTime();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2016, 22:26     Как ввести свою дату в андроид
Посмотрите здесь:

Как добавить в программу свою иконку запуска приложения Android
Как установить Андроид на флешку? Android
Android Как работает библиотека в андроид студио, как ее подключить, чтобы она заработала в проекте?
Как реализовать анимацию в андроид? Android
Android Как добавить версию андроид
Как использовать свою разметку для ListFragment? Android
Android Studio Как подключить свою базу данных Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
04.09.2016, 22:48     Как ввести свою дату в андроид #2
Используй TimeStamp.
anton_rynkovoy
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 14
04.09.2016, 22:52  [ТС]     Как ввести свою дату в андроид #3
А не подскажешь, как сделать, чтобы ввод даты в textEdit разделялся точками?
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
04.09.2016, 22:59     Как ввести свою дату в андроид #4
И ещё, время в адроиде в милисекундах, а там где ты проверяешь, возможно, в секундах.

Добавлено через 33 секунды
в разметке для этого элемента посмотри inputType или как-то так
anton_rynkovoy
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 14
04.09.2016, 23:02  [ТС]     Как ввести свою дату в андроид #5
Все, спасибо, уже получилось)) не знаю как, но таким способом, как я делал , вышло) может не замечал недочет какой-то.

Я поставил inputType = "date". но он не ставит точки. он разрешает вводить только цифры.
kozak95
34 / 34 / 10
Регистрация: 01.11.2013
Сообщений: 319
04.09.2016, 23:09     Как ввести свою дату в андроид #6
anton_rynkovoy,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    public static int calculateAge(String date) throws ParseException{ //dd.MM.yyyy
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
        Date myDate = dateFormat.parse(date);
        Calendar dob = Calendar.getInstance();
        Calendar today = Calendar.getInstance();
        dob.setTime(myDate);
        dob.add(Calendar.DAY_OF_MONTH, -1);
        int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
        if (today.get(Calendar.DAY_OF_YEAR) <= dob.get(Calendar.DAY_OF_YEAR)) {
            age--;
        }
        return age;
    }
ExFau$t
213 / 196 / 39
Регистрация: 08.05.2012
Сообщений: 1,117
04.09.2016, 23:16     Как ввести свою дату в андроид #7
Тогда нужно что-то другое использовать, например это:

Кликните здесь для просмотра всего текста
https://developer.android.com/reference/android/text/TextWatcher.html?hl=ru


Там реализуешь логику, что пользователь может вводить только с 0 по 2 символ, с 3 по 5, с 6 по 10, остальное выставишь точки. Ну или кто по-проще посоветует, я не знаю.
kozak95
34 / 34 / 10
Регистрация: 01.11.2013
Сообщений: 319
04.09.2016, 23:17     Как ввести свою дату в андроид #8
anton_rynkovoy, Ну если по хорошему, то Вам следует использовать TextWatcher для такой задачи.
Lumber
96 / 96 / 37
Регистрация: 02.12.2015
Сообщений: 236
04.09.2016, 23:24     Как ввести свою дату в андроид #9
anton_rynkovoy,
1. Когда создаёшь экземпляр Date туда уже текущая дата/время помещается.
2. Для ввода даты есть специальная штука: DatePicker
fraley
101 / 101 / 36
Регистрация: 24.05.2015
Сообщений: 307
05.09.2016, 06:43     Как ввести свою дату в андроид #10
Примерно с год назад делал что-то подобное:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
public class MainActivity extends AppCompatActivity {
    DatePicker datePicker;
    boolean boolFirst=true;
    Calendar firstCalendar;
    Calendar secondCalendar;
    TextView first;
    TextView second;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Calendar cal = Calendar.getInstance(TimeZone.getDefault());
        ImageButton imageButtonFirstDate=(ImageButton)findViewById(R.id.imageButtonFirstDate);
        imageButtonFirstDate.setImageResource(R.drawable.datepicker2);
        ImageButton imageButtonSecondDate=(ImageButton)findViewById(R.id.imageButtonSecondDate);
        imageButtonSecondDate.setImageResource(R.drawable.datepicker);
        first = (TextView) findViewById(R.id.textViewFirstDate);
        second = (TextView) findViewById(R.id.textViewSecondDate);
 
 
        DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
 
            // when dialog box is closed, below method will be called.
            public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
                String year1 = String.valueOf(selectedYear);
                String month1 = String.valueOf(selectedMonth + 1);
                String day1 = String.valueOf(selectedDay);
 
 
                if(boolFirst) {
                    first.setText(day1 + "/" + month1 + "/" + year1);
                    firstCalendar=new GregorianCalendar(selectedYear, selectedMonth,selectedDay);
                    Log.i("MY_TAG", "Value: "+day1);
                }
                else {
                    second.setText(day1 + "/" + month1 + "/" + year1);
                    secondCalendar=new GregorianCalendar(selectedYear, selectedMonth,selectedDay);
                    Log.i("MY_TAG", "Value: "+day1);
                }
 
            }
        };
 
        final DatePickerDialog datePicker = new DatePickerDialog(this,
                R.style.AppTheme,
                datePickerListener,
                cal.get(Calendar.YEAR),
                cal.get(Calendar.MONTH),
                cal.get(Calendar.DAY_OF_MONTH));
        datePicker.setCancelable(false);
        datePicker.setTitle("Select the date");
 
 
 
 
        imageButtonFirstDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                datePicker.show();
                boolFirst=true;
 
            }
        });
 
        imageButtonSecondDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                datePicker.show();
                boolFirst=false;
 
            }
        });
 
        ((Button)findViewById(R.id.buttonCalculate)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                if(first.getText().toString().trim().length()==0 || second.getText().toString().trim().length()==0) {
 
                    if(first.getText().toString().trim().length()==0 && second.getText().toString().trim().length()==0) {
                        Toast.makeText(getApplicationContext(), "Please set value for first and second dates!", Toast.LENGTH_SHORT).show();
                    }
                    else if(first.getText().toString().trim().length()==0){
                        Toast.makeText(getApplicationContext(), "Please set value for first date!", Toast.LENGTH_SHORT).show();
                    }
                    else{
                        Toast.makeText(getApplicationContext(), "Please set value for second date!", Toast.LENGTH_SHORT).show();
                    }
                }
                else {
                    long temp = secondCalendar.getTimeInMillis() - firstCalendar.getTimeInMillis();
                    long result = temp / 86400000;
                    ((TextView) findViewById(R.id.textViewResult)).setText("The result: " + result);
                }
            }
        });
 
    }
}
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,430
Завершенные тесты: 1
05.09.2016, 12:55     Как ввести свою дату в андроид #11
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import static java.util.Calendar.*;
 
public class MainActivity extends AppCompatActivity implements DatePicker.OnDateChangedListener {
 
    private TextView daysTextView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);
        final Calendar c = getInstance();
        if (datePicker != null) datePicker.init(c.get(YEAR), c.get(MONTH), c.get(DAY_OF_MONTH), this);
        //
        daysTextView = (TextView) findViewById(R.id.daysTextView);
    }
 
    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        final Calendar c = getInstance();
        c.set(year, monthOfYear, dayOfMonth);
        long ms = System.currentTimeMillis() - c.getTimeInMillis();
        long days = TimeUnit.MILLISECONDS.toDays(ms);
        daysTextView.setText(String.valueOf(days));
    }
}
PROFIT
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
07.09.2016, 21:32     Как ввести свою дату в андроид #12
Java
1
2
3
4
Calendar testCalendar = getInstance();
testCalendar.set(year, monthOfYear, dayOfMonth);
long millisDiff = Calendar.getInstance().getTimeInMillis() - testCalendar.getTimeInMillis();
long daysDiff = TimeUnit.MILLISECONDS.toDays(millisDiff);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2016, 17:42     Как ввести свою дату в андроид
Еще ссылки по теме:

Android Как загрузить свою иконку?
JMonkeyEngine, как использовать на Андроид? Android
Android Как изучать андроид?
Как на новом планшете снести андроид и поставить нормальный виндовс, как минимум ХР Android
Android Андроид как пульт

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,430
Завершенные тесты: 1
10.09.2016, 17:42     Как ввести свою дату в андроид #13
Цитата Сообщение от Паблито Посмотреть сообщение
final Calendar c = getInstance(); c.set(year, monthOfYear, dayOfMonth); long ms = System.currentTimeMillis() - c.getTimeInMillis(); long days = TimeUnit.MILLISECONDS.toDays(ms);
Цитата Сообщение от xaat Посмотреть сообщение
Calendar testCalendar = getInstance(); testCalendar.set(year, monthOfYear, dayOfMonth); long millisDiff = Calendar.getInstance().getTimeInMillis() - testCalendar.getTimeInMillis(); long daysDiff = TimeUnit.MILLISECONDS.toDays(millisDiff);
найди 10 отличий
Yandex
Объявления
10.09.2016, 17:42     Как ввести свою дату в андроид
Ответ Создать тему
Опции темы

Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru