我出生于1986-04-21,也就是星期一.我的下一个生日,日名"星期一"是1997-04-21,依此类推.
我写了这个程序,找到了长达100年的时间,找到我的生日来年哪一天是星期一的匹配日名.
这是代码:
<?php
date_default_timezone_set('Asia/Calcutta');
for($year = 1986; $year < 2086; $year++) {
$timestamp = mktime(0, 0, 0, 4, 21, $year);
if(date('l', $timestamp) == 'Monday') {
echo date('Y-m-d, l', $timestamp) . "\n";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这是该程序的输出:
1986-04-21, Monday
1997-04-21, Monday
2003-04-21, Monday
2008-04-21, Monday
2014-04-21, Monday
2025-04-21, Monday
2031-04-21, Monday
2036-04-21, Monday
Run Code Online (Sandbox Code Playgroud)
现在我的问题是为什么PHP在1970年之前和2040年之后都没有支持.
那么我怎样才能在2040年之后或1970年之前获得生日呢?
我需要将datenumber转换为最接近的月末日期.我发现了一个在线链接,但对于大型矩阵来说效率非常低(http://www.mathworks.com/matlabcentral/fileexchange/26374-round-off-dates-and-times).Matlab(Financial Toolbox)是否具有内置功能?我找不到它.
date_in = 734421 ;
somefunction(date_in) --> Sept 2010
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有这个代码:
std::wstringstream outstream;
outstream << (prop.m_pwszOriginalVolumeName
? prop.m_pwszOriginalVolumeName
: L"null") << L";"
<< (prop.m_pwszSnapshotDeviceObject
? prop.m_pwszSnapshotDeviceObject
: L"null") << L";"
<< (prop.m_pwszOriginatingMachine
? prop.m_pwszOriginatingMachine
: L"null") << L";"
<< ... // some more strings here
Run Code Online (Sandbox Code Playgroud)
有没有办法避免代码重复,仍然有简洁的代码?
我有关于Mongo分片键的问题.我有以下列方式构建的文档:
{
"payload": {
"id": "364e1f2c-6d4c-45fb-af19-841149286d67",
"name": "John",
},
"source": "myApp",
"version": "1.0",
"additionalInfo": {
"time": "2012-04-18T17:32:11+03:00"
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我的分片键为:payload.name和additionalInfo.time.以下命令在语法错误时失败:
db.runCommand({ shardcollection : "collection.table", key : {additionalInfo.time: 1, payload.name: 1}})
Run Code Online (Sandbox Code Playgroud)
是否可以创建这样的分片键或仅可以接受顶级键.此外,如果我尝试插入没有分片键字段的文档,插入是否会失败?
我想计算上周的总订单金额.
我得到了从当前日期获取过去7天数据的查询.
SELECT SUM(goods_total) AS Total_Amount FROM orders
WHERE order_placed_date >= date_sub(current_date, INTERVAL 7 day);
Run Code Online (Sandbox Code Playgroud)
现在我怎样才能获得上周的数据,不包括本周.
例如,本周我赚了15,000美元,上周我赚了14,000美元.
我通过运行上面的查询得到$ 15,000.
但我不知道如何计算前一周.
我想获得一个unicode版本calendar.month_abbr[6].如果我没有为语言环境指定编码,我不知道如何将字符串转换为unicode.下面的示例代码显示了我的问题:
>>> import locale
>>> import calendar
>>> locale.setlocale(locale.LC_ALL, ("ru_RU"))
'ru_RU'
>>> print repr(calendar.month_abbr[6])
'\xb8\xee\xdd'
>>> print repr(calendar.month_abbr[6].decode("utf8"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 0: unexpected code byte
>>> locale.setlocale(locale.LC_ALL, ("ru_RU", "utf8"))
'ru_RU.UTF8'
>>> print repr(calendar.month_abbr[6])
'\xd0\x98\xd1\x8e\xd0\xbd'
>>> print repr(calendar.month_abbr[6].decode("utf8"))
u'\u0418\u044e\u043d'
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?解决方案不必看起来像这样.任何给我在unicode中缩写月份名称的解决方案都很好.
我当然可以自己做,但是Ruby或库中有内置功能,可以让我这样做
date = Time.now
sunday = date.week.first_day
saturday = date.week.last_day
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个返回过去x天的方法,它目前执行以下操作:
var dates = new List<DateTime>();
for (int i = 0; i < numDays; i++)
{
dates.Add(DateTime.Today.AddDays(-i));
}
return dates;
Run Code Online (Sandbox Code Playgroud)
我觉得应该有一个更紧凑的方式来做这个,也许使用LINQ.建议?另外,如果我按照我的方式保留它,那么如果我将它DateTime.Today存储在循环外的变量中然后在循环中调用AddDays该值,那么这将更有效吗?
编辑: LINQ使用懒惰评估,对吧?我的头脑中有疯狂的图像:
return DateTime.AllDaysInTheHistoryOfTimeEver.Where(day =>
day.BeforeOrOn(DateTime.Today) &&
day.After(DateTime.Today.AddDays(-numDays))
);
Run Code Online (Sandbox Code Playgroud)