Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить номер дня недели по заданной дате? 
:(
    Опции темы
Alone
Дата 16.2.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



Сабж...
Подскажите...




--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
DarkDS
Дата 16.2.2004, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Код

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_WEEK);

date = java.util.Date
1 = SUNDAY
2 = MONDAY
3 = TUESDAY
4 = WEDNESDAY
5 = THURSDAY
6 = FRIDAY
7 = SATURDAY

Это сообщение отредактировал(а) DarkDS - 16.2.2004, 19:52
PM MAIL   Вверх
Alone
Дата 17.2.2004, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



Пасиб! Моя ошибка была в том, что я писал вот такую конструкцию:
Calendar calendar = Calendar().getInstance();
smile.gif


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Alone
Дата 17.2.2004, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



1 = SUNDAY
2 = MONDAY
3 = TUESDAY
4 = WEDNESDAY
5 = THURSDAY
6 = FRIDAY
7 = SATURDAY

А этот порядок изменить можно?
Или сандень всегда будет первым? Чет через calendar.setFirstDayOfWeek(2) не сработало...
sad.gif


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
DarkDS
Дата 17.2.2004, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Цитата(Alone @ 17.2.2004, 10:49)
1 = SUNDAY
2 = MONDAY
3 = TUESDAY
4 = WEDNESDAY
5 = THURSDAY
6 = FRIDAY
7 = SATURDAY

А этот порядок изменить можно?
Или сандень всегда будет первым? Чет через calendar.setFirstDayOfWeek(2) не сработало...
sad.gif

Сандей всегда первый!
Это номера констант в календаре.
то есть к ним можно обращатся как
Calender.SUNDAY

calendar.setFirstDayOfWeek(2) - выставляет первый день недели. То есть если ты выставишь его на понедельник, то это будет иметь значение только для функции calendar.get( Calendar.WEEK_OF_YEAR ).

Для того чтобы получить порядковый номер дня (для понедельника - первый день) я обычно пользую страшную функцию:
Код

public int getWeekDay( Date date )
{
  Calendar calendar = Calendar.getInstance();
  calendar.setTime(date);

  int day = calendar.get(Calendar.DAY_OF_WEEK);

  --day;
  if ( day == 0 )
     day = 7;

  return day;
}


Это сообщение отредактировал(а) DarkDS - 26.2.2004, 19:47
PM MAIL   Вверх
Alone
Дата 17.2.2004, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 3
Всего: 6



мдя... придется и мне применять твою "СТрАААШНУЮ" smile.gif функцию...
Пасиб!


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Zandr
Дата 28.7.2004, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



А можно вместо:
Код
 --day;
 if ( day == 0 )
    day = 7;


написать, например:
Код
   day = (day == 1) ? 7 : --day;


и полный вариант страшной функции:
Код
public int getWeekDay(Date date) {
   Calendar cal = Calendar.getInstance();
   cal.setTime(date);

   int day = cal.get(Calendar.DAY_OF_WEEK);

   return ((day == 1) ? 7 : --day);
}


Это сообщение отредактировал(а) Zandr - 28.7.2004, 07:09
PM MAIL   Вверх
LSD
Дата 28.7.2004, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Есть такая фишка: calendar.getFirstDayOfWeek() она вернет число соответствующее первому дню недели для той страны с локалью которой был создан календарь (по умолчанию это региональные установки системы, но это можно изменить). Произведя вычитание и взяв по модулю, можно получить порядковый номер дня недели в неделе.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zandr
Дата 29.7.2004, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



Ты про это?:
Код
public int getWeekDay(Date date) {
   Calendar cal;
   int day, offset;

   Calendar cal = Calendar.getInstance();
   cal.setTime(date);
   offset = cal.getFirstDayOfWeek();
   day = cal.get(Calendar.DAY_OF_WEEK);
   return ((day - offset + 7) % 7 + 1);
}

Вернет номер дня недели (нумерация с единицы).
PM MAIL   Вверх
LSD
Дата 29.7.2004, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Именно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nevermind
Дата 30.7.2004, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 15.5.2004

Репутация: нет
Всего: нет



A не подскажите как писать дату в яве, в каком формате? Например как написать получить день недели 01.01.2004?

public int getWeekDay(01.01.2004) выдает ошибку


PM   Вверх
Domestic Cat
Дата 30.7.2004, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172





--------------------

PM   Вверх
nevermind
Дата 30.7.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 15.5.2004

Репутация: нет
Всего: нет



Вот такой код у меня получился

Код
public static void getweekday(int d, int m, int y) {
 Calendar aDate = new GregorianCalendar(y, (m - 1), d);
 int dayOfWeek = aDate.get(Calendar.DAY_OF_WEEK);
 System.out.println(dayOfWeek);


и почемуто нумерация месяцев начинается с 0.
Т.е.:
Январь=0
Февраль=1 и т.д.

А дни недели начинаются с 1.

Если я неправильно понял исправьте меня пожалуйста

Это сообщение отредактировал(а) nevermind - 30.7.2004, 17:22
PM   Вверх
Domestic Cat
Дата 30.7.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Так оно и есть: Январь = 0, первый день месяца = 1.

http://java.sun.com/j2se/1.4.2/docs/api/ja...ndar.html#MONTH

http://java.sun.com/j2se/1.4.2/docs/api/ja...endar.html#DATE


--------------------

PM   Вверх
nevermind
Дата 30.7.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 15.5.2004

Репутация: нет
Всего: нет



Ясненько. Спасибо за помощь smile.gif
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1394 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.