Renjith_R Ответов: 2

Как отобразить номер недели в C# после выбора даты начала и до даты из календаря


как динамически отобразить номер недели в выпадающем списке после выбора "fromdate" и "todate" из всплывающего окна календаря
Я пытаюсь автоматически заполнить выпадающий список "ddlWeekNo" из fromDate и toDate

Пожалуйста помогите
Заранее спасибо

Что я уже пробовал:

DateTime fromDate = Convert.ToDateTime(txtFrom.Text);
           DateTime toDate = Convert.ToDateTime(txtTo.Text);
           String WeekFromTo = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(fromDate.Month).ToString() + " " + fromDate.Day.ToString() + " " + fromDate.Year.ToString() + " to " + CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(toDate.Month).ToString() + " " + toDate.Day.ToString() + " " + toDate.Year.ToString();
           String WeekString = "Week " + ddlWeekNo.SelectedValue + ": " + WeekFromTo;

Karthik_Mahalingam

в чем же проблема ?

Richard Deeming

String WeekFromTo = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(fromDate.Month).ToString() + " " + fromDate.Day.ToString() + " " + fromDate.Year.ToString() + " to " + CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(toDate.Month).ToString() + " " + toDate.Day.ToString() + " " + toDate.Year.ToString();


Это можно упростить до:
string WeekFromTo = string.Format(CultureInfo.CurrentCulture, "{0:MMMM d yyyy} to {1:MMMM d yyyy}", fromDate, toDate);


Или, если вы используете VS2017 / C# 6:
string WeekFromTo = $"{fromDate:MMMM d yyyy} to {toDate:MMMM d yyyy}";


Настраиваемые строки формата даты и времени | Microsoft Docs[^]

2 Ответов

Рейтинг:
0

Herman<T>.Instance

При отображении year-weeknr в текстовом поле с TextMode=Week

public class DateHelpers
    {
        /// <summary>
        /// Gets the current week number.
        /// </summary>
        /// <returns></returns>
        public static string GetCurrentWeekNumber()
        {
            var weeknum = Thread.CurrentThread.CurrentCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
            return DateTime.Now.ToString($"{DateTime.Now.Year}-W{weeknum}");
        }

        /// <summary>
        /// Gets the current week number for a specified DateTime object.
        /// </summary>
        /// <param name="dateTime">The date time.</param>
        /// <returns></returns>
        public static string GetCurrentWeekNumber(DateTime dateTime)
        {
            var weeknum = Thread.CurrentThread.CurrentCulture.Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
            return dateTime.ToString($"{dateTime.Year}-W{weeknum}");
        }
    }