您是否注意到如果您在任何调用之前在脚本中设置实际时区,那么该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手册中支持的时区列表,我可以在PHP中看到所有有效的TZ标识符.
我的第一个问题是如何从代码中获取该列表,但这不是我真正需要的.
我的最终目标是编写函数isValidTimezoneId(),如果时区有效则返回TRUE,否则返回FALSE.
function isValidTimezoneId($timezoneId) {
# ...function body...
return ?; # TRUE or FALSE
}
Run Code Online (Sandbox Code Playgroud)
所以,当我$timezoneId在函数中使用(字符串)传递TZ标识符时我需要布尔结果.
那么,到目前为止我...
我得到的第一个解决方案是这样的:
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) 给出以下对象数组,我需要按日期字段升序对它们进行排序.
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()转换日期属性,但这并没有什么区别.
谢谢.
我有用户表,并希望按位掩码标准选择一些行.我会用小例子来解释我的问题.
表用户的结构
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用户.
例如:
我有用户输入,方括号内允许一些标签.我已经编写了正则表达式模式来查找和验证括号内的内容.
在用户输入字段中,开启括号可以([)使用反斜杠进行转义,也可以使用另一个反斜杠(\)转义反斜杠.我需要后视子模式以避免在开括号之前奇数个连续的反斜杠.
目前我必须处理这样的事情:
(?<!\\)(?:\\\\)*\[(?<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
我有一些图像文件存储在一个文件中(某种存档).那个文件看起来像这样:

好吧,它分为两个部分 - 标题和数据段.标题(绿色)包含各种信息,例如专辑名称,位置,日期/时间,描述,相册中的照片数量等.数据段(蓝色和橙色)结构简单,包含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)
提前致谢.
我正在玩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) 我有一个小问题,
是否可以通过互联网访问任何开放的OBML或Opera Turbo协议规范?
谢谢
试图在我的 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) 我正在学习Javascript,我遇到了一些"古怪"的东西.
为什么不是类型.length或类型的属性.name?它似乎应该属于那一类.相反,它被认为是一个类似于等号的运算符=
也许有一个明显的解释或我不理解的东西(很容易).
php ×4
javascript ×3
datetime ×2
timezone ×2
angular ×1
bitmask ×1
date ×1
delphi ×1
delphi-7 ×1
filestream ×1
lodash ×1
lookbehind ×1
mysql ×1
onchange ×1
opera ×1
opera-turbo ×1
pcre ×1
regex ×1
select ×1
sorting ×1
timage ×1
time ×1
typeof ×1
validation ×1