У меня есть сценарий, какПолучить дату/месяц от общего количества дней в год- Java
"DAY 316 OF YEAR 1998".
как я могу получить точную дату и месяц с выше входом? Есть идеи?
В Java, как я могу достичь этого? Пожалуйста помоги.
У меня есть сценарий, какПолучить дату/месяц от общего количества дней в год- Java
"DAY 316 OF YEAR 1998".
как я могу получить точную дату и месяц с выше входом? Есть идеи?
В Java, как я могу достичь этого? Пожалуйста помоги.
Вы должны сначала сказать, является ли год 1998
или 2098
, или что-то еще.
Кроме того, вы можете достичь того, что хотите, используя API календаря. Константы интерес являются:
Создать экземпляр календаря, используя Calendar.getInstance(TimeZone)
. Установите YEAR
(1998 или 2098, что угодно) и DAY_OF_YEAR
(316) с использованием вышеупомянутых констант и Calendar#set(field, value)
.
Я не уверен, если есть лучший способ, но то, что вы могли бы попробовать это использовать следующую строку кода:
Calendar mycal = new GregorianCalendar(1998, Calendar.JANUARY, 1);
int daysInMonth = mycal.getActualMaximum(Calendar.DAY_OF_MONTH);
Это возвращает количество дней месяца вы ввода. Переход с января до декабря (увеличение/изменение вашего mycal
) и вычесть все из вашего дневного номера, пока у вас не будет отрицательного числа. Это будет ваш месяц.
Попробуйте что-то вроде этого, используя Calender
: -
Date d;
Calendar c= Calendar.getInstance();
c.setTime(date);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
Действительно? Так что, учитывая год и день года, это сработает;) – MadProgrammer
Нет, это не так. Я предположил, что дата d; будет дата, предоставленная пользователем !!! Хотя я получил вашу точку;) –
Используйте Regexps извлечь нужные данные из этой строки и использовать класс Date/календарь, чтобы указать на тот момент. Я думаю, это домашнее задание, поэтому я не буду давать вам никаких фрагментов кода, вы должны сами это решить.
* «Разбор строки, чтобы получить два номера: день года и год» * ... Почему? ['SimpleDateFormat'] (http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) может анализировать' String' - FYI - я предполагаю, что вы имеете в виду 'String' разбор;) – MadProgrammer
Существует несколько способов, которыми вы могли бы достичь этого, исходя из того, что у вас есть.
Например. На основе String
в вашем примере, вы могли бы использовать SimpleDateFormat
, чтобы просто разобрать String
обратно к Date
объекта, который, вероятно, самое простое решение, я могу думать ...
try {
String value = "DAY 316 OF YEAR 1998";
SimpleDateFormat sdf = new SimpleDateFormat("'DAY' DDD 'OF YEAR' yyyy");
Date date = sdf.parse(value);
System.out.println(date);
} catch (ParseException exp) {
exp.printStackTrace();
}
После того, как у вас есть Date
объект , вы можете использовать Calendar
для извлечения различных частей объекта Date
или просто использовать другое DateFormat
для форматирования значения ...
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println("Day of Month = " + cal.get(Calendar.DATE));
// Note, MONTH is 0 indexed...
System.out.println("Month = " + (cal.get(Calendar.MONTH) + 1));
System.out.println("Formatted = " + DateFormat.getDateInstance().format(date));
Таким образом, вы должны закончить с, что-то вроде ...
Day of Month = 12
Month = 11
Formatted = 12/11/1998
Что '98' год? На основании какого Календаря? – MadProgrammer
Похоже, домашнее задание. Что вы пробовали? Кроме того, 98 = 1998 или 2098? –
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html –