使用角度和火力基础存储日期

时间:2016-01-22 22:48:44

标签: javascript angularjs firebase

我正在创建一个有角度的+ firebase食品杂志,我正在对有关日期以及如何最好地存储它们进行逻辑冻结。我的数据结构如下:

{
    "uid": {
        "profile": {
            "name": "name"
        },
        "journal": {
            "date1": {
                "breakfast": "",
                "lunch": "",
                "dinner": ""
            },
            "date2": {
                ...
            }
        }
    }
}

显然,我只想设置一次“日期”值,并能够设置它并从任何时区检索它。我首先将'date'键设置为四舍五入的时间戳,小时,分钟,秒都设置为0.但是这不是时区问题的b / c。

然后我决定使用dateObject.toDateString()作为唯一的'date'键。这很好,直到我意识到这样做会限制我查询firebase的方式。

我希望能够在几天内查询firebase以及维护订单。例如,假设我要查看“2015年1月21日星期三”到“2015年1月29日星期四”的条目。获取这些天的数据需要单独的查询和firebase请求。如果我存储了一个数字,我可以使用firebase的范围查询; startAt(),endAt()和equalTo()。

我目前的解决方案/想法是存储由日期对象的4位数年份,2位数月份和2位数日期组成的8位数字,其中“2015年1月21日星期三”将存储为20150021和“2015年1月29日星期四“如20150029.然后只需解析数字客户端以创建本地日期对象。

但似乎我要么过分看东西,要么过度思考。有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

<style> input[value="ChunkRed"]:checked ~ input[type="text"]{ color:red!important; } input[value="DecoBlue"]:checked ~ input[type="text"]{ color:blue!important; } input[value="Animals"]:checked ~ input[type="text"]{ color:green!important; } input[value="ElegantRed"]:checked ~ input[type="text"]{ color:purple!important; } input[value="Funky"]:checked ~ input[type="text"]{ color:yellow!important; background:black; } input[value="TapePunch"]:checked ~ input[type="text"]{ color:white!important; background:blue; } </style> <form> <h1>Stack - pure css</h1> <h2>Please select a font and enter a message:</h2><br> <input type="radio" name="font" value="ChunkRed"> Chunk Red <input type="radio" name="font" value="DecoBlue" checked> Deco Blue <input type="radio" name="font" value="Animals"> Animals <input type="radio" name="font" value="ElegantRed"> Elegant Red <input type="radio" name="font" value="Funky"> Funky <input type="radio" name="font" value="TapePunch"> TapePunch<br><br> <input type="text" name="message" required size="50" value="The Quick Brown Fox Jumps Over the Lazy Dog" autofocus> <input type="submit" value="Send"> </form> 格式存储日期相当常见。它的优点是结果值在数值上具有可比性,即明天的数量大于今天的数值。

更常见的替代方案是自纪元以来存储在&#34;(毫秒)秒内#34;。这不仅在数值上具有可比性,而且也是yyyyMMdd返回的内容,可以传递给Date.now()