小编Wh1*_*Ck5的帖子

如果我们从代码中设置时区,为什么date()的工作速度要快两倍?

您是否注意到如果您在任何调用之前在脚本中设置实际时区,那么该date()函数的工作速度比平时快2倍date()?我对此非常好奇.

看看这段简单的代码:

<?php

  $start = microtime(true);
  for ($i = 0; $i < 100000; $i++) date('Y-m-d H:i:s');
  echo (microtime(true) - $start);

?>
Run Code Online (Sandbox Code Playgroud)

它只date()使用for循环100,000次调用函数.我得到的结果总是大约1.6秒(Windows,PHP 5.3.5),但......

如果我在开始之前再次设置相同的时区添加一条荒谬的行:

date_default_timezone_set(date_default_timezone_get());
Run Code Online (Sandbox Code Playgroud)

我得到的时间低于800毫秒 ; 快2倍(同一台服务器).

我正四处寻找这种行为的任何合理解释,但没有任何成功.从我的角度来看,这个额外的行没用,但PHP不同意我的看法.

我已经在两个Linux服务器(不同的PHP版本)上尝试了这个测试,并且得到了不同的结果时间,但比例为6:1.

注意:php.ini中的date.timezone属性已正确设置(欧洲/巴黎).

我在这里搜索相关问题并没有找到类似的东西.我还检查了date_default_time_zone()函数@php.net的手册,发现我不仅是一个注意到这一点的人,但仍然无法理解为什么会发生这种情况?

任何人?

php timezone datetime micro-optimization

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

如何检查时区标识符是否有效?

我会试着解释一下这里的问题.

根据PHP手册中支持的时区列表,我可以在PHP中看到所有有效的TZ标识符.

我的第一个问题是如何从代码中获取该列表,但这不是我真正需要的.

我的最终目标是编写函数isValidTimezoneId(),如果时区有效则返回TRUE,否则返回FALSE.

function isValidTimezoneId($timezoneId) {
  # ...function body...
  return ?; # TRUE or FALSE
  }
Run Code Online (Sandbox Code Playgroud)

所以,当我$timezoneId在函数中使用(字符串)传递TZ标识符时我需要布尔结果.

那么,到目前为止我...

1)使用@运算符的解决方案

我得到的第一个解决方案是这样的:

function isValidTimezoneId($timezoneId) {
  $savedZone = date_default_timezone_get(); # save current zone
  $res = $savedZone == $timezoneId; # it's TRUE if param matches current zone
  if (!$res) { # 0r...
    @date_default_timezone_set($timezoneId); # try to set new timezone
    $res = date_default_timezone_get() == $timezoneId; # it's true if new timezone set matches param …
Run Code Online (Sandbox Code Playgroud)

php validation time timezone datetime

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

按日期对具有日期字段的对象数组进行排序

给出以下对象数组,我需要按日期字段升序对它们进行排序.

var myArray = [
  {
    name: "Joe Blow",
    date: "Mon Oct 31 2016 00:00:00 GMT-0700 (PDT)"
  },
  {
    name: "Sam Snead",
    date: "Sun Oct 30 2016 00:00:00 GMT-0700 (PDT)"
  },
  {
    name: "John Smith",
    date: "Sat Oct 29 2016 00:00:00 GMT-0700 (PDT)"  
  }
];
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,最终结果将是John Smith,Sam Snead和Joe Blow.

我正在尝试使用lodash的_.sortBy(),但无论我如何尝试使用它,我都无法进行任何排序:

_.sortBy(myArray, function(dateObj) {
  return dateObj.date;
});
Run Code Online (Sandbox Code Playgroud)

要么

_.sortBy(myArray, 'date');
Run Code Online (Sandbox Code Playgroud)

我需要更改什么来正确排序我的数组?我也有Moment.js,所以我可以根据需要使用它来格式化日期字符串.我尝试使用.unix()转换日期属性,但这并没有什么区别.

谢谢.

javascript sorting date lodash

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

通过权限位掩码从MySQL数据库中选择用户?

我有用户表,并希望按位掩码标准选择一些行.我会用小例子来解释我的问题.

用户的结构

user_id             int           [primary key, auto_increment]
user_email          varchar(200)    
user_privileges     int
Run Code Online (Sandbox Code Playgroud)

注意:它有更多字段,但它们与此问题无关.

填充表可能如下所示

+---------+--------------------+-----------------+
| user_id | user_email         | user_privileges |  << binary
+---------+--------------------+-----------------+
| 1       | john@example.com   | 165             |  10100101
| 2       | max@example.com    | 13              |  00001101
| 3       | trevor@example.com | 33              |  00100001
| 4       | paul@example.com   | 8               |  00001000
| 5       | rashid@example.com | 5               |  00000101
+---------+--------------------+-----------------+
Run Code Online (Sandbox Code Playgroud)

现在我想按特定权限bitmask(按user_privileges列)SELECT用户.

例如:

  • bitmask = 1 [00000001]将选择用户ID 1,2,3和5
  • bitmask = 9 …

php mysql select bitmask

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

RegEx:Look-behind避免奇数个连续反斜杠

我有用户输入,方括号内允许一些标签.我已经编写了正则表达式模式来查找和验证括号内的内容.

在用户输入字段中,开启括号可以([)使用反斜杠进行转义,也可以使用另一个反斜杠(\)转义反斜杠.我需要后视子模式以避免在开括号之前奇数个连续的反斜杠.

目前我必须处理这样的事情:

(?<!\\)(?:\\\\)*\[(?<inside brackets>.*?)]
Run Code Online (Sandbox Code Playgroud)

它工作正常,但问题是这个代码仍然匹配括号前面可能的连续反斜杠对(即使它们是隐藏的),并且后面只检查是否有另外一个反斜杠附加到对(或直接到开括号) .如果可能的话,我需要在后视组内避免它们.

例:

my [test] string is ok
my \[test] string is wrong
my \\[test] string is ok
my \\\[test] string is wrong
my \\\\[test] string is ok
my \\\\\[test] string is wrong
...
etc
Run Code Online (Sandbox Code Playgroud)

我使用PHP PCRE

php regex pcre negative-lookbehind lookbehind

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

JPEG数据流到TImage

我有一些图像文件存储在一个文件中(某种存档).那个文件看起来像这样:

在此输入图像描述

好吧,它分为两个部分 - 标题和数据段.标题(绿色)包含各种信息,例如专辑名称,位置,日期/时间,描述,相册中的照片数量等.数据段(蓝色和橙色)结构简单,包含N x JPEG照片.我可以将"imagedata"段提取到新的TMemoryStream对象中,现在我想使用TImage来显示它.

我可以使用TMemoryStream的SaveAsFile方法,设置一些临时文件名,从TImage加载该文件,然后删除临时文件.这是有效的,但我想知道是否有任何方法可以使用temp将该流发送到TImage中.文件.

当然,我可以编写代码来提取硬盘上的所有文件,但问题是我有很多这样的档案,只是想写应用程序来阅读那些"专辑",而不是在我的硬盘上有20,000多张照片.

简而言之,我想要的只是进行以下程序工作(没有使用临时文件)

procedure ShowImageFromStream(data: TStream; img: TImage);
begin
...
end;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

delphi timage delphi-7 filestream

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

从代码生成的INPUT元素中选择文件后,不会触发事件onChange

我正在玩JavaScript并编写简单的函数来创建INPUTelement(type="file")并模拟点击.

var createAndCallFileSelect = function () {
    var input = document.createElement ("input");
    input.setAttribute ("type", "file");
    input.addEventListener ("change", function () {
        console.log (this.files);
    }, false);
    input.click();
}
Run Code Online (Sandbox Code Playgroud)

它大部分时间都很有效,但有时它不会onChange在选择文件时触发事件(或者在使用multiple属性时使用更多文件INPUT).

我知道onChange当你重新选择同一个文件时不会触发,但很明显这不是这里的情况.它仅在我第一次使用此功能时才触发事件,有时仅触发.onChange如果从对话框中选择了某些内容,则每次下一次点击通

已经尝试在这里和周围寻找这个问题,但似乎所有onChange问​​题和解决方案都与重新选择相同文件的着名问题有关.

我发现这种情况发生在最新的Opera和Firefox上,从未在其他浏览器上测试过.也.我试图等待整个页面加载,但结果仍然相同 - 有时它不会onChange在第一次调用时触发.

任何人都可以向我解释为什么会这样吗?我已经有了解决方法代码,这不是问题,只需要解释为什么在创建INPUT并以这种方式调用时会发生这种情况.

更新:

级联延迟

var function createAndCallFileSelect = function () {
    var input = document.createElement ("input");
    setTimeout (function () { // set type with 1s delay
        input.setAttribute ("type", "file"); …
Run Code Online (Sandbox Code Playgroud)

javascript onchange

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

Opera Turbo或OBML规范

我有一个小问题,
是否可以通过互联网访问任何开放的OBML或Opera Turbo协议规范?

谢谢

opera opera-turbo

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

Angular2 重定向路由不会更改浏览器 url

试图在我的 angular2 应用程序中创建我的重定向路由。

但我的问题是,当有人输入像“nopath”这样的无效路径时,用户会被重定向到“HomeComponent”,但 url 仍然保留“/#/nopath”

我也希望 redirectTo 路由更改 url!我应该如何实现这一目标?

我应该在我的 HomeComponent 构造函数中放置一个 if 来检查当前 url 并将他的路由更改为 homecomponent 吗?还是我遗漏了什么?

路线:

const routes: Routes = [
  { path: '', pathMatch: 'full', component: HomeComponent },
  { path: 'login', component: LoginComponent, canActivate: [AnonymousGuard] },
  { path: 'register', component: RegisterComponent, canActivate: [AnonymousGuard] },
  { path: 'users', component: UserComponent, canActivate: [AuthGuard] },
  { path: '**', redirectTo: '' }
];

export const routing: ModuleWithProviders = RouterModule.forRoot(routes, {useHash: true});
Run Code Online (Sandbox Code Playgroud)

编辑:

试过了,但我没有重定向到 home 组件

const routes: Routes = …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

5
推荐指数
0
解决办法
8039
查看次数

为什么typeof是运算符而不是属性?

我正在学习Javascript,我遇到了一些"古怪"的东西.

为什么不是类型.length或类型的属性.name?它似乎应该属于那一类.相反,它被认为是一个类似于等号的运算符=

也许有一个明显的解释或我不理解的东西(很容易).

javascript typeof

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