【问题标题】:Hiding panel on certain dates using JavaScript使用 JavaScript 在特定日期隐藏面板
【发布时间】:2015-05-14 18:47:19
【问题描述】:

您好,我正在尝试在前端隐藏一个面板(用作访问注册的按钮),它应该只在一年中的特定时间可见。我正在尝试使用 DateTime 函数来获取当前日期,但它似乎对我不起作用 - 它说找不到名称“DateTime”。任何建议表示赞赏。

这是我的代码

module PrestigeWorldWide.Scripts.ViewModels {
export class IndexViewModel extends BaseViewModels.BaseViewModel {
    public panels: KnockoutObservableArray<IPanelObject> = ko.observableArray<IPanelObject>();
    public events: KnockoutObservableArray<FullCalendar.EventObject> = ko.observableArray<any>();

    constructor() {
        super();


        this.panels.push({
            Name: "My Transcript",
            Desc: "View your unofficial QUB transcript",
            Icon: "fa-file-text",
            Link: "/PrestigeWorldwide/Grade/ViewTranscript"
        });

        this.panels.push({
            Name: "Module Info",
            Desc: "View the information on all modules including pre-requisites and course content",
            Icon: "fa-folder-open",
            Link: "/PrestigeWorldwide/Module/ModuleInfo"
        });
        var cutOffStart1 = "14/09/2015";
        var cutOffEnd1 = "12/10/2015";
        var cutOffStart2 = "18/01/2016";
        var cutOffEnd2 = "15/02/2016";

        if (DateTime.Now >= cutOffStart1 && DateTime.Now >= cutOffEnd1) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        this.getEvents();
    }

    getEvents() {
        var url = "/PrestigeWorldwide/Class/GetStudentClasses";
        this.loading(true);
        $.ajax(url).done((events: FullCalendar.EventObject[]) => {
            this.loading(false);
            _.each(events, (event) => {
                this.events.push(event);
            });
        });
    }


}

export interface IPanelObject {
    Name: string;
    Desc: string;
    Icon: string;
    Link?: string;
  }
}

更新 - 我已经进入了以下阶段:(有没有简单的方法可以在不使用 Moments.js 的情况下更改日期格式?对于这么小的一段代码来说似乎有点矫枉过正?)

//Before displaying the Registration wizard panel, check if we are in the range of registration availability dates
        var cutOffStart1 = new Date(2015,09,14);
        var cutOffEnd1 = new Date(2015, 10, 12);
        var cutOffStart2 = new Date(2015,3,11);
        var cutOffEnd2 = new Date(2015,3,15);
        //var cutOffStart2 = new Date(2016,1,18);
        //var cutOffEnd2 = new Date(2016,2,15);
        var today = new Date();
        var dd = today.getDate();
        var mm = today.getMonth() + 1; //January is 0!
        var yyyy = today.getFullYear();
        //check if the current date is in the fisrt semseter registration period
        if (today >= cutOffStart1 && today >= cutOffEnd1) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        //check if the current date is in the second semseter registration period
        else if (today >= cutOffStart2 && today >= cutOffEnd2) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        else { };

【问题讨论】:

    标签: javascript asp.net asp.net-mvc knockout.js visual-studio-2013


    【解决方案1】:

    DateTime.Now 是 c#,你在一个 JavaScript 文件中。

    你需要做这样的事情:

    var now = new Date();
    

    另外值得注意的是,您要比较的截止日期的值是字符串,您也需要将它们转换为日期。

    有几个js库来操作日期,Moment.js就是一个。

    【讨论】:

    • 谢谢,我还以为我在那里做错了什么。
    • 有什么简单的方法可以在不使用 Moments.js 的情况下比较日期?对于这么小的一段代码似乎有点过头了......
    • 从您的字符串创建一个日期实例,即“14/09/2015”,然后将其与之进行比较。这是一个示例 stackoverflow.com/questions/5619202/… ,您 new Date() 将获得当前的日期,但您需要修剪时间或将其设置为零。
    • @Swav 没有问题,我讨厌 javascript/json 中的日期。这是一篇很好的文章“关于 JSON 日期的噩梦”。 :)
    猜你喜欢
    • 2012-11-30
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多