Ну, судя по вашим комментариям, это задание (что означает, что оно должно быть помечено как таковое). Поэтому я боюсь, что мое решение будет неопределенным, но дайте некоторое руководство на (чтение, вероятно, не самое лучшее) решение.
во-первых, вы хотите иметь то, что разделяет данную строку в год/месяц/день.
public class Date {
private int year, month, date;
public Date(final String given) {
// TODO - Extract year/month/date.
// Validate year is supported, month exists and date
// exists in month...
}
}
Далее, ваша (вероятно) нужна какая-то фиксированная точка, которую вы знаете в будний день (скажем, 1 января 2000 года; суббота).
Затем используйте свои знания о днях в году/високосный год, каждый месяц и т. Д., Чтобы узнать, сколько дней с, что датируется предоставленным аргументом.
static int daysSinceKnown(Date date) {
// TODO - How many years since, how many of those were leap-years, etc.
}
Наконец, модульная арифметика может дать вам день недели из возврата этой функции. (В частности, глядя на это значение mod 7
(%7
), вы получите номер 0-6
[отрицательные числа не будут работать красиво, но вы можете поймать это при проверке года), которые вы можете интерпретировать как день недели.)
И что вы пробовали/получили до сих пор? Почему вы не хотите импортировать какие-либо функции времени (есть много нюансов, когда дело доходит до работы с датой/временем, которая ... неприятна для работы без специального API)? Что (конкретно) вы застряли? – user2478398
Вы ищете алгоритм, предложенный для вас, или просто общую идею и вещи, на которые нужно смотреть. Как упоминалось в @ user2478398, при вычислении времени есть много деталей. –
Мы не перешли в любое время в классе, поэтому мы не можем их использовать. Я не могу преобразовать 6-значное число в будний день – CSCdummie