Показывать другой день (дни) в wpf зависит от дня недели - PullRequest
0 голосов
/ 12 июня 2018

У меня есть приложение WPF, где я хочу написать это сверху:

"Хорошо (1) Утро / День / Вечер! Сегодняшняя дата: (2) Дата / День недели. Теперь вынужно сконцентрироваться на (3) среде и четверге. "

(1) Я хотел бы написать утро, если время между 6:00 между 12:00 и днем, если время между 12:01 между 6:00 иВечером, если 6:01 вечера между 5:59 утра.(2) Я хотел бы выписать сегодняшнюю дату и день недели.Например: «Сегодняшняя дата - 12 июня. 2018. Вторник. (3) Я хотел бы написать другой день недели после предложения« вы должны сосредоточиться ». В понедельник я хотел бы написать среду, во вторник.Я хотел бы написать четверг и пятницу и т. Д.

Есть ли решение для этого?

Спасибо за вашу помощь заранее!

Ответы [ 2 ]

0 голосов
/ 12 июня 2018
  1. Я хотел бы написать утро, если время между 6:00 и 12:00, днем, если время между 00:01 и 18:00 и вечером, если 6:01, между 5:59.

Для определения «утром», «днем», «вечером» и «ночью» нам нужно написать собственный метод.Тот, который у меня есть, немного отличается от того, что вы просили, потому что обычно утро начинается после полуночи (люди часто говорят что-то вроде: «Я был до 2 часов ночи!»).Однако вы можете видеть логику и изменять ее в соответствии с вашими предпочтениями.

Если мы используем 24-часовые часы, где полночь равна 0 (что является свойством Hour для DateTimeиспользует), то это делает расчет довольно простым:

public static string GetGeneralTime(DateTime specificTime)
{
    if (specificTime.Hour < 12) return "morning";
    if (specificTime.Hour < 17) return "afternoon";
    if (specificTime.Hour < 21) return "evening";
    return "night";
}

Я хотел бы выписать сегодняшнюю дату и день недели.Например: «Сегодняшняя дата - 12 июня. 2018. Вторник.

Для этой части вы можете получить ее автоматически из DateTime строкового формата (которыйвключает в себя формат «день недели», такой как «понедельник» ("dddd") или краткую форму «понедельник» ("ddd"), и формат «название месяца», например «июнь» ("MMMM") иликороткая форма "Jun" ("MMM")). Нажмите на ссылку выше для получения дополнительной информации.

Например, эта строка:

Console.WriteLine("Today's date is " + DateTime.Now.ToString("MMMM dd. yyyy., dddd"));"

Будет выводить: Сегодняшняя дата12 июня 2018 г., вторник.


Я хотел бы написать другой день недели после предложения "Вы должны сосредоточиться".В понедельник я хотел бы написать среду, во вторник я хотел бы написать четверг и пятницу и т. Д.

Чтобы получить дни концентрации, нам, вероятно, следует создать другой метод, поскольку разные дни имеют разныеправила.Вот пример метода, который возвращает то, что вы описали выше, а для всех остальных дней он просто возвращает строку DayOfWeek следующего дня:

public static string GetConcentrationDays(DateTime fromDate)
{
    switch (fromDate.DayOfWeek)
    {
        case DayOfWeek.Monday:
            return "Wednesday";
        case DayOfWeek.Tuesday:
            return "Thursday AND Friday";
        default:
            // For any other day, return the next day's day of week
            return fromDate.AddDays(1).DayOfWeek.ToString();
    }
}

Теперь мы можем собрать все это вместе, выполнив что-то вроде:

private static void Main()
{            
    // Get the current date and time
    var now = DateTime.Now;

    // Build our greeting string
    var greeting = new StringBuilder();
    greeting.Append("Good " + GetGeneralTime(now) + "! ");
    greeting.AppendLine("Today's date: " + now.ToString("MMMM dd, yyyy, dddd. "));
    greeting.AppendLine("Now you have to concentrate on " + GetConcentrationDays(now));

    // Display our greeting to the user
    Console.WriteLine(greeting.ToString());

    GetKeyFromUser("\nDone! Press any key to exit...");
}

Выход

![![enter image description here

0 голосов
/ 12 июня 2018

Образец:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace stack_days
{
    class Program
    {
        static void Main(string[] args)
        {
            //(1)
            string helloText = "Good " + getHoursText() + " ! ";
            //(2)
            string todayDate = "Today's date is " + DateTime.Now.ToShortDateString() + " ( " + DateTime.Now.DayOfWeek + " ) ";
            //(3)
            string specialDay = getSpecialDayIfDay();

            string fullText = helloText + todayDate + specialDay;

            Console.WriteLine(fullText);
            Console.ReadKey();

        }

        private static string getSpecialDayIfDay()
        {
            string info = "You have to concentrate on ";
            if (DateTime.Now.DayOfWeek == DayOfWeek.Tuesday)
            {
                return info + "Wednesday and Thursday";
            }
            else if (DateTime.Now.DayOfWeek == DayOfWeek.Friday)
            {
                return info + "Weekend";
            }
            else
            {
                return null;
            }
        }

        private static string getHoursText()
        {
            string partOfDay = "";
            int hours = DateTime.Now.Hour;
            if (hours > 18)
            {
                partOfDay = "evening";
            }
            else if (hours > 12)
            {
                partOfDay = "afternoon";
            }
            else if (hours > 6)
            {
                partOfDay = "morning";
            }
            else
            {
                partOfDay = "evening";
            }

            return partOfDay;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...