Дата JavaScript: в следующем месяце

Я предлагаю вам использовать Основную / Форму заявки в качестве родителя и показать форму входа в систему как дочернюю. Показать форму входа с помощью ShowDialog () в событии «Показано» основной / родительской формы (для примера). В зависимости от того, насколько умны ваши классы Form, вам, возможно, придется изменить код ниже. Пример кода ниже подразумевает, что форма входа в систему выполняет всю логику входа в систему. Затем он сообщает своему родителю, если вход был успешным или нет, с помощью свойства DialogResult при закрытии.

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }

    private void ButtonLogoutClick(object sender, EventArgs e)
    {
        LoginUser();
    }

    private void MainFormShown(object sender, EventArgs e)
    {
        LoginUser();
    }

    private void LoginUser()
    {
        using (var loginForm = new LoginForm())
        {
            var loginResult = loginForm.ShowDialog();
            if (loginResult == DialogResult.OK)
            {
                //Login Success
                var userId = loginForm.User.ID; //Query user ID from Login Form for example
            }
            else
            {
                //Login Failed
                Close(); //Close Program for example
            }
        }
    }
}
36
задан Joe Doyle 1 May 2012 в 00:11
поделиться

2 ответа

Вы, вероятно, найдете, что назначаете дату до 31 февраля 2009 (если сегодня Jan 31), и JavaScript автоволшебно прокручивает это в начало марта.

Проверка день месяца, я ожидал бы, что это будет 1, 2 или 3. Если это не то же как, перед добавлением месяца откатывайте на один день, пока месяц не изменяется снова.

Тот путь, день "в последний день Jan" становится "в последний день февраля"

РЕДАКТИРОВАНИЕ:

Ronald, на основе Ваших комментариев к другим ответам, Вы могли бы хотеть избегать поведения пограничного случая такой как, "что происходит, когда я пытаюсь сделать 30 февраля" или, "что происходит, когда я пытаюсь сделать 2009/13/07 (yyyy/mm/dd)" (что последний мог бы все еще быть проблемой даже для моего решения, таким образом, необходимо протестировать его).

Вместо этого я явно кодировал бы для возможностей. Так как Вы не заботитесь о дне месяца (Вы просто хотите, чтобы год и месяц были корректны в течение следующего месяца), что-то вроде этого должно быть достаточным:

var now = new Date();
if (now.getMonth() == 11) {
    var current = new Date(now.getFullYear() + 1, 0, 1);
} else {
    var current = new Date(now.getFullYear(), now.getMonth() + 1, 1);
}

, Который дает Вам Jan 1 в следующем году в течение любого дня в декабре и первого дня следующего месяца в течение любого другого дня. Больше кода, я знаю, но я давно стал усталым от кодирования приемов для эффективности, предпочтя удобочитаемость, если нет ясное требование, чтобы сделать иначе.

52
ответ дан Tom 27 November 2019 в 05:18
поделиться

Вместо этого попробуйте:

var now = new Date();
current = new Date(now.getFullYear(), now.getMonth()+1, 1);
29
ответ дан Benjamin Oakes 27 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: