Как мне узнать четверть данной даты?

Вы можете использовать window.open() для перенаправления на любой веб-сайт.

Например:

window.open('https://www.google.com');

реализовать перенаправление в вашем коде:

render () {
  if(this.isLogin) {
    return(/* your components*/);
  } else {
    window.open('https://www.google.com');
    return (
); //render function should return something } }

Вы также можете указать целевой атрибут или имя окна, более подробно см. [ 113] w3school учебник об этой функции .

31
задан 04.10.2019, 09:55

13 ответов

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

int quarter = (myDate.getMonth() / 3) + 1;

. Будьте предупреждены, хотя getMonth устарело:

Начиная с версии 1.1 JDK, заменено на Calendar.get (Calendar.MONTH).

47
ответ дан 04.10.2019, 10:03
  • 1
    @Gambo Joda Время возвращает monthOfYear в 1-12, таким образом, можно использовать это, например: dimTimeByDay.setQuarter( ((curDate.getMonthOfYear() - 1) / 3) + 1 ); – Hendy Irawan 04.10.2019, 10:03
  • 2
    Месяцы @BobAvallone 0-11 в Java. – Bill the Lizard 04.10.2019, 10:03
  • 3
    Не работает всегда на декабрь 12/3 + 1, 5 – Bob Avallone 04.10.2019, 10:04
  • 4
    @Gambo I don' t думают there' s хорошая аккуратная формула в этом случае, к сожалению. I' d используют переключатель (см. Преступника Programmer' s отвечают ниже). – Bill the Lizard 04.10.2019, 10:04
  • 5
    как дела это при наличии месяца от 1-12? Я попробовал то же, но x / 4 + 1, но имеющий округление проблем. – Gambo 04.10.2019, 10:04
  • 6
    Большое спасибо за ответ. Я взглянул на статью, которую Вы упомянули, и она помогла мне разрешить проблему!!! Используя команду netstat-ano я нашел, что некоторый процесс слушал на 0.0.0.0:443, и это был Skype:) и затем я нашел в настройках Skype что опция " Используйте порты 80 и 443 как альтернативы для поступления connections" был помечен. После снятия выделения с ним все хорошо работает. – andrew 16.12.2019, 09:39

с java8 вы можете использовать форматтер:

import java.time.format.DateTimeFormatter
import java.time.LocalDate

println("withQuarter: " + LocalDate.of("2016".toInt,"07".toInt,1).format(DateTimeFormatter.ofPattern("yyyyQMM")))

с кварталом: 2016 3 07

0
ответ дан 04.10.2019, 09:56
  • 1
    Код doesn' t действительно вписываются в мой ответ, но он подходит хорошо к обсуждению в Ваш ответ. Хотеть интегрировать его? (Обратите внимание, что itertools.compress() был представлен в Python 2.7.) – Sven Marnach 30.11.2011, 05:03

Для меня, я использовал этот метод для представления строки:

int quarter = (Calendar.getInstance().get(Calendar.MONTH) / 3); // 0 to 3
String[] mQuarterKey = {"qt1", "qt2", "qt3", "qt4"};
String strQuarter = mQuarterKey[quarter];
0
ответ дан 04.10.2019, 09:57
  • 1
    Почему Вы присвоили бы x[:] вместо всего x? – Kirk Strauser 30.11.2011, 04:56

Хорошие решения здесь, но помните, что кварталы могут меняться в зависимости от компании / отрасли. Иногда квартал может отличаться от трех месяцев.

Вы, вероятно, хотите расширить или инкапсулировать класс календаря, чтобы настроить его для своих задач, а не написать какую-нибудь служебную функцию, которая преобразует его. Ваше приложение, вероятно, достаточно сложное в этой области, чтобы вы могли найти другие применения для своего нового календарного класса - я обещаю, что вы будете рады, что вы расширили или инкапсулировали его, даже если сейчас это кажется глупым.

1
ответ дан 04.10.2019, 09:57
  • 1
    @radtek: Начиная с удаления объекта из списка O (n) операция, тот подход имеет O (n²) сложность худшего случая. – Sven Marnach 05.03.2014, 07:59

У JFreeChart есть класс Quarter. Если вам интересно, посмотрите javadoc . Источник также доступен в SourceForge , если вы хотите проверить реализацию.

1
ответ дан 04.10.2019, 09:58
  • 1
    Да я делаю это в обратном порядке, работы без копирования: x = len (system_list) # удаляют все пустые записи поскольку я в диапазоне (x-1,-1,-1): если не system_list [я]: del system_list [я] – radtek 05.03.2014, 07:46

Удостоверьтесь, что thisMonth является по крайней мере плавающей или двойной, а не целым числом:

String quarter = thisMonth/3 <= 1 ? "Q1" : thisMonth/3 <= 2 ? "Q2" : thisMonth/3 <= 3 ? "Q3" : "Q4";

С уважением, MS

2
ответ дан 04.10.2019, 09:59
  • 1
    @delnan: Ну, для мелочных придирок еще больше Вы можете и даже получать полезные результаты, если Вы выполняете итерации по списку в обратном порядке. Но это, вероятно, не быстрее (и определенно намного более сбивающее с толку), чем просто создание нового списка как предложенный Sven. – Tim Pietzcker 30.11.2011, 21:23

При использовании времени Joda используйте функцию Math.ceil ():

double quarter = Math.ceil(new Double(jodaDate.getMonthOfYear()) / 3.0);
3
ответ дан 04.10.2019, 09:59
  • 1
    Ну, для мелочных придирок: Вы " can" но you' ll получают бесполезные результаты, и другие контейнеры напрямую запрещают его. –  30.11.2011, 03:58

Если у вас есть

private static final int[] quarters = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};

, то ток quarter равен

private static final int thisQuarter = quarters[thisMonth];

Где thisMonth равен

private static final int thisMonth = cal.get(Calendar.MONTH);
4
ответ дан 04.10.2019, 10:00

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

Calendar cal = Calendar.getInstance(Locale.US);
/* Consider whether you need to set the calendar's timezone. */
cal.setTime(date);
int month = cal.get(Calendar.MONTH); /* 0 through 11 */
int quarter = (month / 3) + 1;

Это позволит избежать получения тринадцатого месяца (Calendar.UNDECIMBER) в незападных календарях, и любой перекос, вызванный их более короткими месяцами.

10
ответ дан 04.10.2019, 10:00

Вам придется написать свой собственный код, потому что термин «квартал» различен для каждого бизнеса. Разве вы не можете просто сделать что-то вроде:

Calendar c = /* get from somewhere */
int month = c.get(Calendar.MONTH);

return (month >= Calendar.JANUARY && month <= Calendar.MARCH)     ? "Q1" :
       (month >= Calendar.APRIL && month <= Calendar.JUNE)        ? "Q2" :
       (month >= Calendar.JULY && month <= Calendar.SEPTEMBER)    ? "Q3" :
                                                                    "Q4";
12
ответ дан 04.10.2019, 10:01
  • 1
    У меня была та же самая проблема. Я просто закрыл Skype и сайт запущенный штраф. Спасибо @andrew! – ThisGuy 16.12.2019, 09:37

В Java 8 и более поздних версиях классы java.time имеют более простую версию. Используйте LocalDate и IsoFields

LocalDate.now().get(IsoFields.QUARTER_OF_YEAR)
31
ответ дан 04.10.2019, 10:02
  • 1
    Это был TeamViewer hogging это для меня! – Pete Montgomery 16.12.2019, 09:38
int month = Calendar.getInstance().get( Calendar.MONTH ) + 1;

int quarter = month % 3 == 0?  (month / 3): ( month / 3)+1;
1
ответ дан 04.10.2019, 10:03
  • 1
    Here' s оперативный O (n) версия, для которой только нужен O (1) дополнительная память: ideone.com/F10fB . Это isn' t больше комплекс, чем Ваш O (n^2) версия. (+1 для подробного ответа, btw) – Sven Marnach 30.11.2011, 04:26

tl; dr

YearQuarter
.from(
    LocalDate.of( 2018 , 1 , 23 ) 
)

ThreeTen-Extra

Ответ от abdmob правильный: использование java.time является мудрым путь.

Кроме того, проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time.

Его полезные классы включают:

Текущий квартал

Чтобы получить текущий квартал, укажите часовой пояс. Определение квартала означает определение даты. А определение даты означает указание часового пояса. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Укажите, используя собственное имя часового пояса в форме continent/region. Никогда не используйте 3-4-буквенные сокращения, такие как EST или IST.

ZoneId z = ZoneId.of( "America/Montreal" );
YearQuarter yq = YearQuarter.now( z );

С учетом java.util.Date

Если дано java.util.Date, сначала преобразуйте в тип java.time. Класс Instant представляет момент на временной шкале в UTC с разрешением наносекунд .

Instant instant = myUtilDate.toInstant();

Назначьте часовой пояс, чтобы получить ZoneDateTime.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

Создать YearQuarter из этого ZonedDateTime.

YearQuarter yq = YearQuarter.from( zdt );

Используйте в своем коде

Вы должны передавать экземпляры YearQuarter, а не просто числа или строки. Использование объектов обеспечивает безопасность типов, гарантирует допустимые значения и делает ваш код более самодокументируемым.

2
ответ дан 04.10.2019, 10:04
  • 1
    хороший. Необходимо отправить его как ответ на ТАК. – gurney alex 30.11.2011, 04:52

Теги

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