Как получить первый день данного недельного числа в Java

Позвольте мне объясниться. Путем знания недельного числа и год даты:

Date curr = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(curr);
int nweek = cal.WEEK_OF_YEAR;
int year = cal.YEAR;

Но теперь я не знаю, как получить дату первого дня той недели. Я смотрел в Календаре, Дате, DateFormat, но ничто, что может быть полезно...

Какое-либо предложение? (работающий в Java)

21
задан Joe Doyle 30 April 2012 в 00:50
поделиться

3 ответа

Эти поля не возвращают значения. Это постоянные , которые определяют поля в объекте , который вы можете получить / Set / Add. Для достижения того, что вы хотите, вам сначала нужно получить календарь , очистить его и установить известные значения. Он автоматически устанавливает дату в первый день этой недели.

// We know week number and year.
int week = 3;
int year = 2010;

// Get calendar, clear it and set week number and year.
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, week);
calendar.set(Calendar.YEAR, year);

// Now get the first day of week.
Date date = calendar.getTime();

Пожалуйста, учитесь на Прочитайте javadocs javadocs , чтобы узнать, как использовать классы / методы / поля и не пытаться мыть случайным в своем IDE;)

, что сказал, java.util.date и java.util.calendar EPIC . Если вы можете, рассмотреть возможность переключения на время Joda .

39
ответ дан 29 November 2019 в 20:21
поделиться

Если вы знаете, что пробел обусловлен только местами, вы можете использовать:

$string = str_replace(' ','',$string); 

Но если это может быть связано с космосом, tab... вы можете использовать:

$string = preg_replace('/\s+/','',$string);
-121--1785593-

Наиболее эффективным и практичным способом является использование конст-ссылки. QString COW будет медленнее, чем передача по ссылке, но быстрее, чем обычная копия.

-121--2106641-

Вот несколько быстрых и грязных кодов для этого. Этот код создает объект календаря с датой текущего дня, вычисляет текущий день недели и вычитает день недели таким образом, что вы находитесь на первом дне (воскресенье). Хотя я использую DAY_OF_YEAR это проходит через годы прекрасно (1/2/10 он вернется 12/27/09 что правильно).

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class DOW {

    public static void main(String[] args) {
        DOW dow = new DOW();
        dow.doIt();
        System.exit(0);
    }

    private void doIt() {
        Date curr = new Date(); 
        Calendar cal = Calendar.getInstance(); 
        cal.setTime(curr); 
        int currentDOW = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DAY_OF_YEAR, (currentDOW * -1)+1);

        Format formatter = new SimpleDateFormat("MM/dd/yy");
        System.out.println("First day of week="+formatter.format(cal.getTime()));
    }
}
0
ответ дан 29 November 2019 в 20:21
поделиться

Я не делал много вещей о дате на java, но решение может быть:

cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - cal.get(Calendar.DAY_OF_WEEK));

Логика:

Получить день недели и вычесть его из текущей даты (может понадобиться -1, в зависимости от того, нужен ли вам понедельник, чтобы быть первым днем недели или воскресенья)

2
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: