using System.Collections.Generic;
string partialDate = "2024/01/19";
string[] dateSegments = partialDate.Split('/');
List<string> prefixes = GeneratePrefixes(partialDate);
foreach (var prefix in prefixes) {
Console.WriteLine(prefix);
private static List<string> GeneratePrefixes(string partialPrefix) {
List<string> prefixes = new List<string>();
string[] dateSegments = partialPrefix.Split('/');
int year = int.Parse(dateSegments[0]);
int? month = dateSegments.Length >= 2 ? int.Parse(dateSegments[1]) : null;
int? day = dateSegments.Length >= 3 ? int.Parse(dateSegments[2]) : null;
int? hour = dateSegments.Length >= 4 ? int.Parse(dateSegments[3]) : null;
int? minute = dateSegments.Length >= 5 ? int.Parse(dateSegments[4]) : null;
for (int mo = 1; mo <= 12; mo++) {
var dayCount = DateTime.DaysInMonth(year, mo);
for (int d = 1; d <= dayCount; d++) {
for (int h = 0; h < 24; h++) {
for (int mi = 0; mi < 60; mi++) {
string formattedPrefix = $"{year:D4}/{mo:D2}/{d:D2}/{h:D2}/{mi:D2}";
prefixes.Add(formattedPrefix);
var dayCount = DateTime.DaysInMonth(year, month.Value);
for (int d = 1; d <= dayCount; d++) {
for (int h = 0; h < 24; h++) {
for (int mi = 0; mi < 60; mi++) {
string formattedPrefix = $"{year:D4}/{month:D2}/{d:D2}/{h:D2}/{mi:D2}";
prefixes.Add(formattedPrefix);
for (int h = 0; h < 24; h++) {
for (int mi = 0; mi < 60; mi++) {
string formattedPrefix = $"{year:D4}/{month:D2}/{day:D2}/{h:D2}/{mi:D2}";
prefixes.Add(formattedPrefix);
else if (minute == null) {
for (int mi = 0; mi < 60; mi++) {
string formattedPrefix = $"{year:D4}/{month:D2}/{day:D2}/{hour:D2}/{mi:D2}";
prefixes.Add(formattedPrefix);
string formattedPrefix = $"{year:D4}/{month:D2}/{day:D2}/{hour:D2}/{minute:D2}";
prefixes.Add(formattedPrefix);