2013-08-20 2 views
9

было еще несколько вопросов, которые почти одинаковы, но я не могу заставить свой бит кода работать. Я получаю пользовательский ввод, который есть день рождения dd/mm/yyyy. Кстати, я игнорирую високосные годы. Я пытаюсь определить, в какой день недели это было, когда пользователь родился. Я должен определить, сколько дней они родились с определенной даты, которая в данном случае является вторник 1-ого января 1901. Вот почему ив сделал year-1901Как найти, в какой день недели это - Java

день = int day;

используется переключатель для того чтобы определить, сколько дней в каждом месяце, который представлен dayMonth так июля имеет 31, 28 февраля имеет т.д.

год = int year;

String[] days = 
     {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; 
howManyDays = ((year-1901)*365 + dayMonth + day - 1);  
whatDay = (howManyDays%7); 
days[whatDay] 

Это работает иногда, но иногда это не так. Любая помощь приветствуется, если любые вопросы не стесняйтесь спрашивать. Спасибо заранее и надеюсь, что это имеет смысл!

+2

Взгляните на http://stackoverflow.com/questions/5574673/what-is-the-easiest-way-to-get-the-current-day-of-the-week-in-android – AFoley

+0

I dont want todays date, я хочу, чтобы он изменился в зависимости от ввода пользователей. –

+0

http://stackoverflow.com/questions/5270272/how-to-determine-day-of-week-by-passing-specific-date –

ответ

18

Вы можете использовать Java Calendar.

Calendar c = Calendar.getInstance(); 
c.set(year, month, day); 

int day_of_week = c.get(Calendar.DAY_OF_WEEK); 

Это дает Вам Int, в какой день недели он есть, вы можете просто предоставить массив для сопоставления с «именами» дней.

+0

Вместо 'c.set (2012, 03, 22);' Могу ли я пойти 'c.set (год, месяц, день)' или что-то в этом роде? –

+0

уверен :) это был просто пример, я отредактировал его, чтобы было ясно. – RedSonja

6

Кодекс вы использовали не могут быть реализованы в любых стандартных операций даты, потому что есть много случаев, как високосный год и т.д.

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

Для еще более сложных функций даты Используйте JODA Calendar. Календарь Joda работает быстро и имеет много операций, таких как дни недели между двумя днями и т. Д. Для получения более подробной информации вы можете ознакомиться с приведенной выше ссылкой.

Для Теперь вы можете использовать этот

 Calendar calendar = Calendar.getInstance(); 
    calendar.set(year, month, date) ; 
    int i=calendar.get(Calendar.DAY_OF_WEEK); 

Здесь значение I будет составлять от 1-7 воскресенья по субботу.

+0

будет месяц быть -1 из того, что он когда-либо? Так что, если бы я хотел войти в июле, мне пришлось бы поставить 6? или я бы поставил 7? –

+0

@Dileep Ссылка указывает на Google и может не работать. –

+0

@RomanC Спасибо за примечание. – Dileep