Преобразовать 6-значное число в день недели (питон)
В настоящее время я пытаюсь преобразовать 6-значное число в день недели. Например, я хочу, чтобы "150102" было преобразовано, поскольку в будний день в пятницу "15" - это год 2015 "," 01 "- это месяц, а" 02 "- это день.
Примечание. Я хочу сделать это без импорта временных функций и использования языка Python.
1 ответ
Ну, судя по вашим комментариям, это задание (что означает, что оно должно быть помечено как таковое). Поэтому я боюсь, что мое решение будет расплывчатым, но предоставьте некоторые рекомендации по (читай, вероятно, не самое лучшее) решению.
Во-первых, вы хотите иметь что-то, что разбивает данную строку на год / месяц / дату.
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
[отрицательные числа не будут работать хорошо, но вы можете уловить это при проверке года], который вы можете интерпретировать как день недели.)