我正在尝试将 MongoDB 记录分成 MomentJS 中的日期范围。
在 Mongo 中,每条记录的 IsoDate 格式为:
"date": {
"$date": "2015-06-26T13:02:12.121Z"
},
我的查询返回周和年:
var query = Order.aggregate(
[
{
$project:
{
week:
{
$week: '$date'
},
year:
{
$year: '$date'
},
dayOfWeek: {
$dayOfWeek:
[
'$date'
]
}
}
},
{
$group:
{
_id: null,
distinctDate:
{
$addToSet:
{
year: '$year',
week: '$week'
}
}
}
}
]
);
它给出了周和年的输出:
week: 50
year: 2015
在前端,我的一周从周一开始,周日结束:
var monday = moment().day("Monday").isoWeek(weekNum).year(year).format('MM-DD-YYYY');
var sunday = moment().day("Sunday").isoWeek(weekNum).year(year).format('MM-DD-YYYY');
输出是:
12-26-2015 to 01-01-2015
12-19-2015 to 12-25-2015
12-12-2015 to 12-18-2015
在 Moment 中处理新年时出现问题:
console.log('WeekNum', weekNum, monday, sunday, year):
WeekNum 0 12-28-2016 01-03-2016
如果我的一周从星期一开始,那么 2016 年的 week num 0 应该从 2016 年 1 月 4 日开始,对吗?因此,2015 年的第 52 周将包含 2015 年 12 月和 2016 年 1 月的记录。
我想不出如何让周数在一年中保持一致。
输出应该是:
12-26-2015 to 01-01-2016
12-19-2015 to 12-25-2015
12-12-2015 to 12-18-2015
我认为通过为每条记录获取 ISOdate,然后简单地向其添加 7 天来捕获它可能会更好?那就是周范围?
var start_of_week = moment().dayOfYear(dayOfYear).year(year).format('MM-DD-YYYY');
var end_of_week = moment().dayOfYear(dayOfYear).year(year).add('days', 7).format('MM-DD-YYYY');
但这有时会产生意想不到的结果。我得到了重叠的周范围:
01-01-2016 to 01-08-2016
12-29-2015 to 01-05-2016
12-27-2015 to 01-03-2016
12-26-2015 to 01-02-2016
最佳答案
$week 的 MongoDB 概念与 Moment.js 中使用的“ISO week”概念相匹配。如果可以,至少升级到 MongoDB 3.4 版本并开始使用 $isoWeek,它将使用 ISO 周的标准概念。
否则,您必须通过为 Moment.js 定义自定义语言环境来使 Moment.js 的“周”概念与 Mongo 匹配,其中“周从星期日开始,第 1 周从一年中的第一个星期日开始”
关于mongodb - Moment JS 一年中的周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34816284/
目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks
我需要当前周数,如果我没有完全弄错的话现在是第51周?然而,当在控制台中测试它时,我得到了这个。Time.now=>2013-12-1911:08:25+0100Time.now.strftime('%U')=>"50"Date.today=>Thu,19Dec2013Date.today.strftime("%U").to_i=>50这是为什么? 最佳答案 Time.now.strftime('%V')将根据ISO8601为您提供周数。 关于ruby-on-rails-RubyOnRa
我正在尝试根据给定年份的周数进行一些日期计算。例如:date=Date.today#Monday,March5,2012putsdate.cwyear#2012putsdate.cweek#10(10thweekof2012)既然我知道当前是几号,我想弄清楚下一周和上一周是什么。我需要获取年份(2012)和周数(10)并将其转回日期对象,以便计算下一周/上一周的值。我该怎么做? 最佳答案 你想要Date.commercial:require'date'now=Date.today#=>2012-03-05monday_next_we
我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多
我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序
我如何从Ruby代码连接到mongodb? 最佳答案 首先,您必须安装MongoDbgem:geminstallmongo然后运行代码:require'rubygems'#notnecessaryforRuby1.9require'mongo'db=Mongo::Connection.new.db("mydb")#ORdb=Mongo::Connection.new("localhost").db("mydb")#ORdb=Mongo::Connection.new("localhost",27017).db("mydb")
我正在尝试使用聚合框架(使用ruby)并像这样投影日期:db['requests'].aggregate([{"$project"=>{_id:0,method:'$method',user:'$user',year:{'$year'=>'$timestamp'}}}])文档是这样的:{_id:ObjectId("5177d7d7df26358289da7dfd"),timestamp:ISODate("2013-04-12T03:58:05+00:00"),method:"POST",status:"200",inputsize:"874",outputsize:"4981",u
我试图通过在Ruby中进行的查询从MongoDB获取字段的子集,但它似乎不起作用。它不返回任何结果这是ruby代码:coll.find("title"=>'Halo',:fields=>["title","isrc"])#thisdoesn'twork如果我删除字段散列,它会工作,返回包含所有字段的结果coll.find("title"=>'Halo')#thisworks查看mongodb控制台,第一个查询在mongodb服务器上结束,如下所示:{title:"Halo",fields:["title","isrc"]}如果我尝试从mongo客户端控制台进行查询,它会工作,我会得到结
在Ruby中获取一年中任何特定日期的最佳方法是什么?例如:31/dec/2009应该返回day365,01/feb/2008应该返回day32 最佳答案 基本上(此处显示在irb中):>>require'date'>>Date.today.to_s=>"2009-11-19">>Date.today.yday()=>323对于任何日期:>>Date.new(y=2009,m=12,d=31).yday=>365或者:>>Date.new(2012,12,31).yday=>366@另见:RubyDocumentation
我想知道如何从Rails获取当前周数以及如何操作它:将周数转换为日期。根据周数设置间隔。谢谢。 最佳答案 使用strftime:%U-Weeknumberoftheyear.TheweekstartswithSunday.(00..53)%W-Weeknumberoftheyear.TheweekstartswithMonday.(00..53)Time.now.strftime("%U").to_i#43#Or...Date.today.strftime("%U").to_i#43如果你想添加43周(或天、年、分钟等)到一个日期,