我只是想澄清我是否理解日期和时区的工作方式.
基本上,我有一个日期字符串@"2008-07-06 12:08:49",我想转换为NSDate.我希望这个日期和时间在当前用户的时区中.无论如何,如果他们是GMT或HST,它仍然是12:08:49.
如果我的日期为unix格式1215382129(UTC)且我的时区设置为伦敦(GMT),则NSLog()的输出日期为:
2008-07-06 12:08:49 +0100
如果我然后将我的时区更改为夏威夷(HST)并输出相同的日期,我会得到:
2008-07-06 12:08:49 -1000
这似乎工作正常,但我的印象是在夏威夷时间,我必须将时间差(-10小时)添加到unix时间戳.这不是必需的吗?
这是否意味着,无论unix时间指向的日期和时间如何,它总是指向用户所在时区的相同日期和时间?
希望这是有道理的!
编辑
我刚刚意识到(感谢Kevin Conner!)实际上NSDateFormatter正在为该日期字符串创建不同的unix时间戳,具体取决于当前时区!所以我完全错了!! :-)
我在MySQL中的日期以下列格式存储:
2012-01-25 15:16:12
现在我需要将此日期行转换为unix时间戳.这可能在PHP?
我有以下格式的一些数据:
Pin|add
jtyjg
Kolk|aaa||
Kawr|wht u
Disnce
Djhdb|bbb||
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下格式:
Pin|add jtyjg Kolk|aaa||
Kawr|wht u Disnce Djhdb|bbb||
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
将MYSQL Datetime转换为PHP UNIXTIME的最简单方法是什么?
例:
2012-12-31 23:59:59然后将来自mysql的数据转换为UNIXTIME.
$dateTime = '2012-12-31 23:59:59'; // convert this to unixtime stamp
$unixTime = strtotime($dateTime); // this not work as expected
Run Code Online (Sandbox Code Playgroud)
我试过strtotime,但它无法正常工作.
我需要在几秒钟内找到文件的年龄,但是当我给出Perl行时:
perl -e ' my @st=stat("$name"); print time - $st[9];'
Run Code Online (Sandbox Code Playgroud)
来自Bash的变量"." 在文件名中,它将找不到该文件并改为打印systime.否则,如果我创建一个名称为"某事"的文件,它的效果非常好.
我尝试用\来逃避角色,但这不起作用.我真的不知道Perl,我不知道如何解决这个问题.
谢谢您的帮助!
(请不要建议任何BASH只有解决方法,这里的很多东西都是旧的,截断的......)
编辑:我发现了一个解决方法,但由于我是一个新手,我无法回答我自己的问题,所以这里是:
所以我终于找到了解决方法.
您在Bash中导出变量:
export name=".file.txt"
Run Code Online (Sandbox Code Playgroud)
然后从Perl中调用它,如下所示: $ENV{name}
它工作得很好.
编辑2:
出口创意只是一个临时解决方案.更好的是使用单引号作为perreal建议.
如何使用 ORACLE 在 NUMBER 中转换 CURRENT_TIMESTAMP 函数?
使用以下代码,我可以提取系统的 CURRENT_TIMESTAMP
SELECT SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
我想要的是用上面代码的结果来创建对应的unix格式的时间戳。实际上:1) 使用 SELECT SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) FROM DUAL; 我收到这个结果:
--------------------------------------------------
| SYS_EXTRACT_UTC(CURRENT_TIMESTAMP) |
--------------------------------------------------
| 30-OTT-14 09:51:43,164232000 |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
2)我想将其转换为:
--------------------------------------------------
| UNIXTIMESTAMP |
--------------------------------------------------
| 1414662703 |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
那可能吗?谢谢大家
目前我正在将我所有的PHP unix时间戳转换为2k38以上的问题.
我注意到setcookie() expire date参数使用unix时间戳.有没有办法用替代方法设置过期日期,也许以某种方式使用DateTime类?
从有关过期日期的PHP文档:
注意:您可能会注意到expire参数采用Unix时间戳,而不是日期格式Wdy,DD-Mon-YYYY HH:MM:SS GMT,这是因为PHP在内部执行此转换.
如何将这种格式的时间戳转换为人工日期?
我使用 javascript 创建时间戳:
Date.now();
Run Code Online (Sandbox Code Playgroud)
输出示例:
1468833354929
Run Code Online (Sandbox Code Playgroud)
然后我将它存储在一个数据库中。
所以当我尝试用 R 转换它时:
date <- as.POSIXct(1468833354929, origin="1970-01-01", tz="Asia/Singapore")
Run Code Online (Sandbox Code Playgroud)
我得到:
48515-06-24 09:15:29 SGT
Run Code Online (Sandbox Code Playgroud)
但它应该是:
2016-07-18 09:15:29 SGT
Run Code Online (Sandbox Code Playgroud)
任何想法为什么以及如何获得正确的人类日期时间?
我知道我们可以使用该time()函数来获取seconds自纪元以来经过的时间.我如何得到这个milliseconds?
我正在与我们处理的基于JavaScript的系统进行互操作milliseconds.
谢谢!顺便说一句,我将在nginx的上下文中评估这个脚本.
我将GregorianCalendar实例转换为Date以获取Unix时间戳。
但是我想知道为什么同一日期每次都会返回不同的Unix时间戳。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = new GregorianCalendar();
calendar.set(2018, 0, 1, 0,0,0);
System.out.println(sdf.format(calendar.getTime()));
Date date = calendar.getTime();
System.out.println(sdf.format(date));
System.out.println(date.getTime());
Run Code Online (Sandbox Code Playgroud)
日期本身是正确的,并且始终相同"2018/01/01 00:00:00"。但是为什么每次Unix时间戳都不同?例如,这些是执行5次后的值。
1514761200624
1514761200618
1514761200797
1514761200209
1514761200132
Run Code Online (Sandbox Code Playgroud)