问题标签 [strtotime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
700 浏览

php - 使 strtotime() 仅在将来生成时间

我正在尝试制作一个 PHP 脚本来查找下一次出现的日期(比如 5-1)。但是,如果我把它strtotime()放在 5-2 上,它会得出今年的日期。我只是想让它总是返回下一个日期。我怎样才能使这项工作?如果有帮助,我正在使用 codeigniter。

编辑:这是我想出的一些代码,如果一些卑微的灵魂遇到同样的问题:

0 投票
4 回答
7508 浏览

php - 获取下一年周一和周二的所有日期

我需要从当前日期开始输出未来 12 个月的日期列表(仅限周一和周二),如下所示:

2010 年1 月 2010 年 1 月
12 日 2010 年 1 月
18 日星期一 2010 年 1 月
19 日 星期二 2010 年 1 月
25 日 2010 年
2 月 2 日
星期二 2010 年 2 月 2 日
星期一 2010 年 2 月 8 日
星期二 2010 年 2 月 9 日
星期一 2010 年 2 月 15 日
星期二 2010 年 2 月 16 日
星期一 2010 年 2 月 22 日 星期一 2010 年3 月 2010 年
3 月
星期二2010 年 3 月
15 日星期一 2010 年 3 月
16 日星期二
...

作为 PHP 新手,我认为strtotime并在接下来的 52 周内循环是最好的方法。

但是我的代码的输出是

2010年 1 月 2010 年 1 月
18 日 2010 年 1 月
12 日 2010 年 1 月
25 日 2010年 2 月
19 日 2010 年
2 月8 日 2010 年 2 月
8 日 2010 年2
月 2 日 2010 年 2 月
15 日 2010 年2 月 15 日 2010 年
2 月22 日 2010 年 3 月
22 日 2010 年 2 月
16 日 2010 年
3 月
08 日
2010 年 3 月 2日星期二 2010 年 3 月
15 日星期一 2010 年 3 月9 日
星期二 2010年 3 月
22 日星期一 2010 年 3 月
16 日星期二 2010 年 3 月
29 日星期一 2010 年 3 月
23 日星期二

如您所见,日期的顺序不正确,我不知所措。

有没有更优雅/简单的方法来解决这个问题?

使用的 PHP 版本是 5.2.11,短期内没有前景 5.3 :-(

谢谢你的帮助。

按照 Aly 的建议修改以下代码。将计算机日期从 2010 年 12 月 1 日星期二更改为 2010 年 1 月 1 日星期三,以测试输出。

以错误的顺序再次输出。

2010 年 1月
周二 2010 年 1 月 19 日
周一 2010 年 1 月 18 日
周二 2010 年 1 月 26 日
周一 2010 年 1 月 25 日 2010 年
2 月 9 日
周二 2010 年 2 月 9 日
周一 2010 年 2 月 8 日
周二 2010 年 2 月 16 日
周一 2010 年 2 月 15 日
周二 2010 年 2 月 23 日 周二 2010 年 2 月
22 日周一

0 投票
5 回答
1907 浏览

php - PHP 日期问题 - strtotime 不输出它应该输出的内容?

我的数据库中有几个空白的 DATETIME 值(0000-00-00 00:00:00)。

每当我通过 strtotime 运行它们时,它们会返回“1263247058”而不是 FALSE,它应该根据链接页面上的信息执行此操作:

PHP strtotime() 什么都不输出

怎么来的?

谢谢。

0 投票
1 回答
363 浏览

php - 使用 DOMDocument 元素中的 strtotime 转换日期

在使用 curl 获取 HTML 文件后,我正在使用 DOMDocument 解析一些数据。代码看起来像这样

我无法$var使用 strtotime 转换为时间戳。我不知道为什么,我知道$cols->item(1)->nodeValue返回了我想要的值,我什至尝试将其分解并内爆到另一个变量中,但我仍然无法使用 strtotime 将其转换为时间戳。我也直接测试了值

strtotime('11 Jan 2010');

它确实返回了一个时间戳,那么,我该怎么办?

0 投票
3 回答
7623 浏览

php - 如何使用带有时间戳的mysql“LIKE”语法?

我想让我的用户在数据库中搜索某一天提交的行。使用该date()功能将日期输入数据库中的字段非常好,但是当我使用 phpstrtotime功能时,日期当然不完全相同。

是否有一些聪明的 mysql 功能可以帮助我解决这个问题?

0 投票
4 回答
1218 浏览

php - PHP strtotime() 看起来像是期待欧元格式

我一直在使用 PHP 的 strtotime() 方法来接受表单上的日期字段。我喜欢它的强大功能,它如何接受“明天”、“下周四”或(据说)任何日期表示并将其转换为 Unix 时间戳。

它一直工作得很好——直到昨天。有人输入“2-4-10”,而不是记录 2010 年 2 月 4 日,而是记录 2002 年 4 月 10 日!所以它期望 YMD 而不是 MDY。

我认为问题可能只是使用 2 位数的年份,所以我们再次尝试使用“2-4-2010”。记录在 2010 年 4 月 2 日!那时我只是不明白 strtotime() 在做什么。PHP.net 说它需要美国英语日期格式。那为什么它会假设DMY?

有没有解决的办法?还是我必须停止使用 strtotime()?

注意:我刚刚做了一个测试。当您使用斜杠而不是连字符/破折号时,它可以正常工作,即使是 2/4/10。为什么这很重要?如果仅此而已,我是否应该在将表单输入传递给 strtotime() 之前在表单输入上运行 str_replace("-", "/", $input)?

0 投票
2 回答
10116 浏览

php - php - mktime 还是 strtotime?

我正在尝试将 2010-02 转换为 2010 年 2 月。但是,我不断得到 1969 年 12 月

我尝试过使用 mktime、strtotime 以及两者的某种组合,但仍然无法做到......

这是我最近尝试的...

0 投票
2 回答
351 浏览

php - php why does it keep adding 2 minutes?

When it's pulled from the db, it comes out like this: 2010-02-28 10:00:00

I'm formatting it (yes, I know that it's better to just do it in the query, but I don't have that option right now):

But, no matter what, it outputs like this: Sunday February 28, 2010 10:02 AM

Any idea why it's adding those two minutes?

0 投票
2 回答
1233 浏览

php - php strtotime 问题,给出不正确的值?

我有这个代码:

顺便说一句,我已经设置

结果是:2010 年 4 月 5 日,缺席 3 天。为什么会这样?我听说它们是strtotime中的一些错误?如果是这样,如何获得正确的?我的意思是,有没有另一种方法来代替它:

0 投票
6 回答
8666 浏览

php - 如何使 strtotime 以澳大利亚(即英国)格式解析日期:dd/mm/yyyy?

我不敢相信我以前从未遇到过这个。

基本上,我正在解析人工创建的文本文档中的文本,而我需要解析的字段之一是日期和时间。因为我在澳大利亚,日期的格式类似于dd/mm/yyyystrtotime只想将其解析为美国格式的日期。此外,exploding by/是行不通的,因为正如我所提到的,这些文档是手工输入的,其中一些采用d M yy.

我尝试了多种组合,setlocale但无论我尝试什么,语言总是设置为美国英语。

我相当确定 setlocale 是这里的关键,但我似乎无法找到正确的代码。试过这些:

  • 澳大利亚
  • 奥恩
  • en_AU
  • 澳大利亚
  • 澳大利亚

还有什么我可以尝试的吗?

为清楚起见:我在带有 Windows 框的 IIS 上运行。

非常感谢 :)

伊恩

例子:

生产

我希望它产生:


我的解决方案

我在这里给一个答案打勾,因为它是我的一个更容易阅读的解决方案,但这是我想出的:

因为我不能依赖用户与他们的日期输入保持一致,所以我让我的正则表达式更复杂一点:

  • 0 到 3 之间的 0 或 1 个数字
  • 0 到 9 之间的 1 位数字——是的,这将匹配 37 作为有效日期,但我认为正则表达式已经足够大了!
  • 可能是一些空格
  • 分隔符('.'、'/' 或 '')
  • 可能是一些空格
  • 任何一个:
    • 10 到 12 之间的数字或
    • 1 到 9 之间的数字,前导 0 可选
  • 可能是一些空格
  • 分隔符('.'、'/' 或 '')
  • 可能是一些空格
  • 任何一个:
    • 一个 2 位数长的数字或
    • 一个 4 位数长的数字

希望这将匹配大多数日期写作风格......