小编Lan*_*rts的帖子

如何减去两个日期,忽略PHP中的夏令时?

我正在尝试计算两天之间的天数,但我遇到了夏令时的问题.这是我的代码:

function date_diff($old_date, $new_date) {
    $offset = strtotime($new_date) - strtotime($old_date);
    return $offset/60/60/24;
}
Run Code Online (Sandbox Code Playgroud)

只要天数都在同一个DST期间,就可以正常工作:

echo date_diff('3/15/09', '3/18/09'); // 3
Run Code Online (Sandbox Code Playgroud)

但如果它们相距甚远则不是:

echo date_diff('11/15/08', '3/18/09'); // 122.95833333333
Run Code Online (Sandbox Code Playgroud)

我想要偶数天,而不关心夏令时.我想我可以绕过结果,但感觉很糟糕.有更好的(简单)方式吗?如果我可以避免它,我不想写一整天解析和计数 - 避免闰年的事情.

(注意:这必须在php 5.1.6下运行,因此5.3中的某些日期功能可能无法使用.)

更多信息:我将获取偏移量并将其添加到数据库中的其他日期时间,并且我只希望更改日期部分,而不是时间部分.无论如何,结果舍入将无效,因为当我进行添加时,它会在另一个方向上下一个小时.也许对整个问题有一个更好的方法....

php datetime dst

1
推荐指数
1
解决办法
8574
查看次数

有人可以解释DaylightSavingsRule在"EndMonth"之后如何拥有"StartMonth"吗?

使用C#(.NET框架),我循环遍历所有TimeZones及其AdjustmentRules ......以及"毛里求斯标准时间"{(GMT + 04:00)Port Louis)} - 调整规则如下:

IsFixed = false;
DaylightTransitionStart.Month = 10;
DaylightTransitionEnd.Month = 1;
Run Code Online (Sandbox Code Playgroud)

根据我的理解,'IsFixed = false'意味着我使用"StartDate"和"EndDate"字段...而是,我需要使用DaylightTransitionStart和End来动态确定时间是在白天时间还是不.

问题在于,对于大约30个转换规则,"StartMonth"是在"EndMonth"之后

DaylightSavingsTime如何 '2008年10月' 开始到2008年1月结束?

请帮助我理解这一点......一旦我越过这个障碍,我应该有一个完整的"转换到UTC的所有时间区域以及所有历史记录的任何时区"编写的SQL函数.

.net timezone dst

1
推荐指数
1
解决办法
186
查看次数

检查内容唯一性的容器

是否有任何语言的数据类型/容器在插入项目之前检查内容的唯一性而不是值或索引?

containers unique-constraint

1
推荐指数
1
解决办法
72
查看次数

关于过早优化的另一个问题

Knuth说:我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源

我很好奇他是如何得出97%的.有人可以分享一下吗?

更新:问题是:这句话写在一篇研究论文中,如何在这样的正式文件中接受主观陈述?

optimization performance

1
推荐指数
3
解决办法
417
查看次数

SQL字符串替换解决方法

我正在使用Sybase 10的修改版本,它没有东西,替换或str_replace函数.我需要在许多记录中替换部分字符串.

是否有任何创造性的方法来编程,所以我不必手动完成所有这些?

例:

UPDATE status
SET description = replace(description,'abc','def')
WHERE name = 'test'
Run Code Online (Sandbox Code Playgroud)

编辑: 我发现我们没有字符串操作函数,我将不得不做导出和导入来进行批量字符串更改.我会留下这个问题,所以其他不受我限制的人将能够找到答案.

sql string sybase

1
推荐指数
1
解决办法
883
查看次数

如何正确地将key => val对添加到现有数组

从'php.net'尝试过的例子,但不明白是什么问题.有什么建议?

<?php

$_SESSION['test'] = array('a' => '1', 'b' => '2');

foreach ($_SESSION['test'] as $key => $val)
    echo "key: " . $key . " val: " . $val . "\n";

// Parse error
array_push($_SESSION['test']['c'] => '3'); 

// Parse error
$_SESSION['test'][] = ('c' => '3');

foreach ($_SESSION['test'] as $key => $val)
    echo "key: " . $key . " val: " . $val . "\n";

?>
Run Code Online (Sandbox Code Playgroud)

php

1
推荐指数
1
解决办法
1228
查看次数

SQL和Oracle中数据更改时的通知

我正在构建一个系统,我需要在基于.net的应用程序中通知窗口服务,以防数据库表(插入,更新,删除)发生任何变化.我知道这可以通过SQL中的ADO.NET事件来完成.是否有任何可以提供这类通知的Oracle和SQL的通用解决方案.这需要在更新实时发生时发生.

sql oracle ado.net

1
推荐指数
1
解决办法
2569
查看次数

VB6不需要的结果读取c:\ test.txt

我从text103.text开始,其文本值为我要检查的C:\ test.txt.因此,如果text103.text中的任何内容与C中的任何内容匹配:\ test.txt label3.caption应该读取"成功",但每次运行它时,我都会"失败"为什么?

所以这是我的按钮中的代码:

Private Sub Command1_Click()

    nFileNum = FreeFile
    Open "C:\test.txt" For Input As nFileNum
    lLineCount = 1

    Do While Not EOF(nFileNum)
       Line Input #nFileNum, sNextLine
       sNextLine = sNextLine & vbCrLf
       sText = sText & sNextLine
    Loop
    Text102.Text = sText
    Close nFileNum


    If Text102.Text = Text103.Text Then
        Label3.Caption = "success"
    Else
        Label3.Caption = "failure"
    End If


End Sub
Run Code Online (Sandbox Code Playgroud)

即使我的text103.text以"hello"开头,我编辑C:\ test.txt只是说"你好"它总是给我label3.caption"失败"!!! 为什么???

vb6

1
推荐指数
1
解决办法
222
查看次数

在C#中计算值数组(从Excel转换公式)

我目前正在构建一个半复杂的计算器,它基本上是我提供的Excel电子表格的转换.

我已经把大部分内容钉在了但是在Excel电子表格中有一个部分,其中在6行和7列之间进行了多次计算,但问题在于计算没有按照特定的顺序发生.

因此,例如,Row0[Column1]使用计算,并使用(Row2[Column4] * Row2[Column5])Row1[Column4]计算(Row4[Column2] / Row5[Column1])..你得到了想法.

我曾考虑使用2D数组,但我担心这些值会按特定顺序计算,因此在达到它们时没有任何价值.据我所知,ROW1将首先计算,然后行2,ROW3,等等.

因此,如果没有为我的Excel电子表格中的每个单元格创建变量(并对其进行适当排序),有没有办法可以使用C#计算出来?

我真的很感激任何帮助,建议,指针,无论你认为什么都可能 - 我很乐意听到它!

编辑实现@dtb提供的Lazy类之后,我得到了以下代码.它是我提供的Excel电子表格中的内容的直接副本,包括指针和计算.

var sr = new Lazy<decimal>[6, 6];
sr[0, 0] = new Lazy<decimal>(() => sr[1, 0].Value - eNumber);
sr[0, 3] = new Lazy<decimal>(() => sr[0, 4].Value - sr[1, 0].Value - sr[1, 4].Value);
sr[0, 4] = new Lazy<decimal>(() => sr[0, 0].Value * edD);
sr[0, 5] = new Lazy<decimal>(() => sr[0, 0].Value); …
Run Code Online (Sandbox Code Playgroud)

c# excel calculated-columns lazy-evaluation multidimensional-array

1
推荐指数
1
解决办法
1788
查看次数

1
推荐指数
2
解决办法
3547
查看次数