小编vas*_*ite的帖子

如何在PHP中从日期时间对象中减去24小时

我有以下代码:

  $now = date("Y-m-d H:m:s");
  $date = date("Y-m-d H:m:s", strtotime('-24 hours', $now));
Run Code Online (Sandbox Code Playgroud)

但是,现在它给了我这个错误:

A non well formed numeric value encountered in...
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

php datetime

35
推荐指数
4
解决办法
6万
查看次数

DateTime对象上的timezone_types不同

我在Postgres上使用Doctrine2.在一个表中,我有两种不同的日期类型:birthdate:datecreated_at:datetimetz.两者都成为DateTime对象但具有不同timezone_type.这是列表:

created_at datetimetz:

DateTime Object
(
    [date] => 2013-04-18 11:54:34
    [timezone_type] => 1
    [timezone] => +02:00
)
Run Code Online (Sandbox Code Playgroud)

birthdate 日期:

DateTime Object
(
    [date] => 1970-01-01 00:00:00
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)
Run Code Online (Sandbox Code Playgroud)

我需要以相同的方式格式化我的对象.两者都应该有timezone_type=3.

我怎样才能做到这一点?

php postgresql timezone datetime

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

使用Composer添加包(通过SVN)

我为我的个人PHP库创建了一个SVN存储库,并在根级别添加了一个composer.json文件:

{
        "name": "myPersonalLibrary/lib",
        "type": "library",
        "description": "Light MVC framework for PHP 5.4",
        "keywords": ["database","mvc"],
        "homepage": "http://mysite.com",
        "license": "MIT",
        "require": {
                "php": ">=5.3.0",
                "mustache/mustache": "dev-master"
        },
        "autoload": {
                "psr-0": {
                        "bbn": "src"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下composer.json创建了一个项目:

{
    "require": {
        "monolog/monolog": "1.0.*",
        "zerkalica/php-code-sniffer": "dev-master",
        "mustache/mustache": "dev-master",
        "myPersonalLibrary/lib": "*"
    },
    "repositories": [
            {
                    "type": "svn",
                    "url": "https://mysite.com/svn/myPersonalLibrary",
                    "branches-path": false,
                    "tags-path": false,
                    "trunk-path": "src"
            }
    ]
}
Run Code Online (Sandbox Code Playgroud)

当我尝试更新我的项目时,我得到: No valid composer.json was found in any branch or tag of https...

我认为问题来自我的文件结构,但我找不到任何关于此的文档:

/my_repo
  /src …
Run Code Online (Sandbox Code Playgroud)

php svn composer-php packagist

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

如何将外部javascript文件添加到Zend Framework 2应用程序?

我需要将jQuery和其他javascript文件添加到我的Zend Framework项目中.我正在尝试使用Action控制器: -

public function userinfoAction()
{   
    $this->view->headScript()->appendFile($basePath .'/js/validate_jquary.js');
    $this->headScript()->appendFile('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'); 
    return new ViewModel();
}
Run Code Online (Sandbox Code Playgroud)

但它没有用.

javascript jquery zend-framework zend-framework2

13
推荐指数
2
解决办法
2万
查看次数

在strtotime一个月的第一个工作日

我试图弄清楚某个月的第一个星期三使用strtotime,但是"第一个星期三"的论点在第一个星期三恰好落在1号时就失败了.

有关此问题的更一般说明,请参阅以下代码和结果:

$mon = strtotime("December 2010 first monday");
$tue = strtotime("December 2010 first tuesday");
$wed = strtotime("December 2010 first wednesday");
$thu = strtotime("December 2010 first thursday");
$fri = strtotime("December 2010 first friday");
$sat = strtotime("December 2010 first saturday");
$sun = strtotime("December 2010 first sunday");

echo strftime("%m/%d/%y", $mon) . "<br>";
echo strftime("%m/%d/%y", $tue) . "<br>";
echo strftime("%m/%d/%y", $wed) . "<br>";
echo strftime("%m/%d/%y", $thu) . "<br>";
echo strftime("%m/%d/%y", $fri) . "<br>";
echo strftime("%m/%d/%y", $sat) . "<br>";
echo strftime("%m/%d/%y", $sun) . …
Run Code Online (Sandbox Code Playgroud)

php datetime strtotime

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

Httplistener和文件上传

我正在尝试从我的网络服务器检索上传的文件.当客户端通过webform(随机文件)发送文件时,我需要解析请求以获取文件并进一步处理.基本上,代码如下:

HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
StreamReader r = new StreamReader(request.InputStream, System.Text.Encoding.Default);
// this is the retrieved file from streamreader
string file = null;

while ((line = r.ReadLine()) != null){
     // i read the stream till i retrieve the filename
     // get the file data out and break the loop 
}
// A byststream is created by converting the string,
Byte[] bytes = request.ContentEncoding.GetBytes(file);
MemoryStream mstream = new MemoryStream(bytes);

// do the rest
Run Code Online (Sandbox Code Playgroud)

因此,我能够检索文本文件,但对于所有其他文件,它们都已损坏.有人能告诉我如何正确解析这些HttplistnerRequests(或提供轻量级替代)?

c# parsing httplistener httplistenerrequest streamreader

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

将主键更改为组合键(主键已存在)

我试图将我的SQL数据库中的表的主键从现有键更改为复合键,该组合键不包括现有列.由于以下错误消息,以下代码无法正常工作:

DROP PRIMARY KEY:

PRIMARY附近的语法不正确.期望COLUMN,CONSTRAINT,ID或QUOTED_ID

添加主要关键:

PRIMARY附近的语法不正确.期待身份证

T-SQL代码:

ALTER TABLE AgentIdentification 
DROP PRIMARY KEY Number, 
ADD PRIMARY KEY (AgentId, IdIndicator)
Run Code Online (Sandbox Code Playgroud)

编辑

我能够通过使用以下两个查询语句来完成此任务

ALTER TABLE AgentIdentification 
DROP CONSTRAINT [PK_AgentId_Id]
GO

ALTER TABLE AgentIdentification
ADD CONSTRAINT pk_PersonID PRIMARY KEY (AgentId, IdIndicator)
Run Code Online (Sandbox Code Playgroud)

相反,要求SQL"DROP PRIMARY KEY"我需要告诉它"DROP的约束",也分离这两个动作分为两个查询帮助.

sql sql-server primary-key composite-primary-key

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

获得两个连续两个日期,它们之间的时间间隔最长

$a = 1950-05-01
$b = 1965-08-10
$c = 1990-12-30
$d = 1990-12-29
$e = 2012-09-03
Run Code Online (Sandbox Code Playgroud)

从按日期升序排序的mysql数据库中检索日期.

我需要一个mysql或PHP脚本来获得具有最大天差的两个CONSECUTIVE日期.

解释:脚本应该计算$ a和$ b,$ b和$ c,$ c和$ d,$ d和$ e,$ e和$ a之间的天数,然后以最大天差输出两个日期.

有没有办法用一个快速的mysql/php代码执行此操作,或者我应该使用以下脚本进行一些循环(在stackoverflow上的另一个问题上找到它)?

$now = time(); // or your date as well
$your_date = strtotime("2010-01-01");
$datediff = $now - $your_date;
echo floor($datediff/(60*60*24));
Run Code Online (Sandbox Code Playgroud)

查询列出日期:

SELECT date AS count FROM table WHERE column1 = 'YES' AND data BETWEEN 1950-01-01 AND 2012-09-04
Run Code Online (Sandbox Code Playgroud)

php mysql

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

如何正确杀死zend框架中的会话?

这就是我设置会话的方式

$this -> sess = new Zend_Session_Namespace('user');
$this -> sess -> username = "Bob";
$this -> sess -> admin = "1";
Run Code Online (Sandbox Code Playgroud)

这就是我杀了它的方式

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com");
$_SESSION = array();
session_destroy();
$this -> _redirect('/');
Run Code Online (Sandbox Code Playgroud)

但它仍然保持$ this-> sess-> admin为'1'...用户名已消失,但管理员保持为一.删除与客户端关联的所有会话的正确方法是什么?

如果我做

$this->sess->admin = 0;
Run Code Online (Sandbox Code Playgroud)

然后它工作,但我怀疑这是我持有的每个会话变量的正确方法.

我也试过了

setcookie("mycookiename",md5(rand(10,1200)),time() - (60 * 60),"/",".site.com");
Zend_Session::namespaceUnset($this->sess);
Run Code Online (Sandbox Code Playgroud)

它没有用,它没有关闭任何会话.

php session zend-framework

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

PHP:数字数组可以加起来

这不仅仅是一个难题.我实际上找到了一个解决方案,但它很慢,我以为我丢失了我的网络连接(见下文).

这是问题所在:

假设我有一系列数字,如下所示:

$numbers_array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
Run Code Online (Sandbox Code Playgroud)

我们还说我有一些数字,存储在变量中,如下所示:

$sum = 15;
$sum2 = 24;
$sum3 = 400;
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个函数,如果$numbers_array可以将任何数字加在一起(每个只使用一次)以形成总和,则返回true :

function is_summable($array_of_nums, $sum_to_check) {
    //What to put here?
}

var_dump(is_summable($numbers_array, $sum));
var_dump(is_summable($numbers_array, $sum2));
var_dump(is_summable($numbers_array, $sum3));
Run Code Online (Sandbox Code Playgroud)

以上应输出:

bool(true)
bool(true)
bool(false)
Run Code Online (Sandbox Code Playgroud)

因为7 + 8 = 15,7 + 8 + 9 = 24,但没有1-9的组合可以创建200.

这是我极其缓慢的解决方案:

function is_summable($numbers, $sum) {
    //Sort provided numbers and assign numerical keys.
    asort($numbers);
    $numbers = array_values($numbers);

    //Var for additions and var for …
Run Code Online (Sandbox Code Playgroud)

php numbers sum add

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