Вы можете использовать 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 учебник об этой функции .
Вы можете использовать
int quarter = (myDate.getMonth() / 3) + 1;
. Будьте предупреждены, хотя getMonth устарело:
Начиная с версии 1.1 JDK, заменено на Calendar.get (Calendar.MONTH).
с 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
itertools.compress()
был представлен в Python 2.7.)
– Sven Marnach
30.11.2011, 05:03
Хорошие решения здесь, но помните, что кварталы могут меняться в зависимости от компании / отрасли. Иногда квартал может отличаться от трех месяцев.
Вы, вероятно, хотите расширить или инкапсулировать класс календаря, чтобы настроить его для своих задач, а не написать какую-нибудь служебную функцию, которая преобразует его. Ваше приложение, вероятно, достаточно сложное в этой области, чтобы вы могли найти другие применения для своего нового календарного класса - я обещаю, что вы будете рады, что вы расширили или инкапсулировали его, даже если сейчас это кажется глупым.
У JFreeChart есть класс Quarter. Если вам интересно, посмотрите javadoc . Источник также доступен в SourceForge , если вы хотите проверить реализацию.
Удостоверьтесь, что thisMonth
является по крайней мере плавающей или двойной, а не целым числом:
String quarter = thisMonth/3 <= 1 ? "Q1" : thisMonth/3 <= 2 ? "Q2" : thisMonth/3 <= 3 ? "Q3" : "Q4";
С уважением, MS
При использовании времени Joda используйте функцию Math.ceil ():
double quarter = Math.ceil(new Double(jodaDate.getMonthOfYear()) / 3.0);
Поскольку кварталы представляют собой локализованную (западную) концепцию, вместо локали по умолчанию укажите локаль:
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) в незападных календарях, и любой перекос, вызванный их более короткими месяцами.
Вам придется написать свой собственный код, потому что термин «квартал» различен для каждого бизнеса. Разве вы не можете просто сделать что-то вроде:
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";
В Java 8 и более поздних версиях классы java.time имеют более простую версию. Используйте LocalDate
и IsoFields
LocalDate.now().get(IsoFields.QUARTER_OF_YEAR)
int month = Calendar.getInstance().get( Calendar.MONTH ) + 1;
int quarter = month % 3 == 0? (month / 3): ( month / 3)+1;
YearQuarter
.from(
LocalDate.of( 2018 , 1 , 23 )
)
Ответ от 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
, а не просто числа или строки. Использование объектов обеспечивает безопасность типов, гарантирует допустимые значения и делает ваш код более самодокументируемым.
dimTimeByDay.setQuarter( ((curDate.getMonthOfYear() - 1) / 3) + 1 );
– Hendy Irawan 04.10.2019, 10:03