问题标签 [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 投票
6 回答
12050 浏览

php - 使用 strtotime 获得一个月内的第一个工作日

我正在尝试使用 找出给定月份的第一个星期三strtotime,但是只要第一个星期三恰好落在 1 日,“第一个星期三”参数就会失败。

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

结果是:

注意到什么了吗?一周中的某一天不应该与每月的第一天重合吗?但它永远不会这样做,而是总是返回当天的第二个实例,即 8 号。

有人对此有解释吗?

0 投票
1 回答
1263 浏览

date - php strtotime 转换错误的日期

我想知道为什么以秒为单位将日期转换为时间,然后再转换回来,结果是错误的???

0 投票
2 回答
1212 浏览

php - PHP strtotime 没有闰年

关于这个线程,我开发了一个部分解决方案:

该函数应该在不检查闰年的情况下获取给定字符串的秒数。

它会计算 1970 年的闰年 [(year-1986)/4] 的数量,将其乘以闰年和正常年份之间的秒数差(最后,它只是一天)。

最后,我只是从计算的时间中删除了所有多余的闰年秒数。以下是输入/输出的一些示例:

你可能会问我为什么要对输出做除法?这是为了测试它;31536000 是一年中的秒数,因此 19.99... 应该是 20 而 0.99... 应该是 1。当然,我可以将其全部舍入并得到“正确”的答案,但我担心不准确。

编辑1:因为它看起来并不明显,所以我的问题在于陈旧;你只是不问 PHP 20 年,它给你 19.99...,对吗?

Edit2:这一切似乎都归结为 1968 年的部分;

  • 1970;在我尝试过的所有测试中发现它都是准确的。
  • 1969;发现它在此处使用( ...ex: (2008-1969)/4 = 9.75...) 以及在此处提及。第 2 年(+3 年)后准确。
  • 1968; 如下所述,这是从 Unix 时间(1970 年)开始的闰年的“零年”。这听起来“正确”(对我来说),但它根本不准确
0 投票
4 回答
4104 浏览

php - 如何 strtotime 时间戳,或者如何最好地处理 SQL 日期?

date()在我的 PHP 应用程序中,当我使用 PHP 的命令对其进行格式化时,我从 MySQL 数据库中获取日期。我想整理一下并将其完全移动到视图中,而不是检索。但是我遇到了一些问题。

从数据库中获取日期时,我会在运行后将其传递给应用程序的其余部分strtotime(),以便date()函数具有可以使用的东西。这是一个好主意吗?还是我错过了更好更明显的东西?我正在处理的日期几乎都在DATE类型中,而不是DATETIME.

所以,我得到了日期,可以用来date()在网页上显示它。但有时,我会从数据库中获取一些东西,只是为了插入到数据库的其他地方,并且不得不在后端寻找需要date()的地方,这违背了将其分离到视图中的目的。我的检索功能有用地返回strtotime($date_from_db),然后我在另一个表中创建新条目......所有新条目都必须通过验证和准备功能。这就是问题所在。我通过查看日期是否strtotime()为 0000-00-00 以外的内容来验证和准备日期。但我不能strtotime()在时间戳上运行;在我跑的测试中,如果给了我 1969 年 12 月 31 日。所以我的问题:

  1. 是否有可能以某种方式strtotime()在时间戳上运行?
  2. 如果不是,是否有一种简单的方法可以知道变量是否是时间戳?所以我可以简单地运行date()它而不是处理strtotime()? 除了看看它是否出现在 1969 年 12 月 31 日,因为我不知道我是否可以相信失败是一致的。除非那是一件有效的事情吗?
  3. 我这样做完全错了吗?
0 投票
1 回答
520 浏览

php - 使用日期和 StrToTime

我一直在使用以下代码,没有任何问题,直到它最终登陆 Windows 服务器并决定产生错误:

*(e_date 存储如下:“1293559200”,e_time 存储如下:“18:00”)*

错误是这样的:

据我了解,这是因为我在 date 函数中使用 strtotime。所以我想知道解决或重写这个问题的优雅方法是什么?

我应该将整个 strtotime 放入一个新变量中,即 $newdate 然后以该形式返回日期,还是以其他方式?

谢谢!

0 投票
4 回答
1109 浏览

php - 如何使用 PHP date() 返回 7 天前的上一个星期日?

这是我到目前为止所拥有的:

输出 $start 时返回:1969-12-31 06:00:00

我究竟做错了什么?

0 投票
1 回答
171 浏览

php - strtotime 和日期验证(01/20/2011 与 01/2011)

应该只允许这两种格式!

PHP:

验证:

如果 = 2011 年 1 月 20 日

  • 第一部分应仅包含数字 01-12
  • 第二部分应仅包含数字 01-31
  • 第三部分应由 4 个数字组成

如果 = 01/2011

  • 第一部分应仅包含数字 01-12
  • 第二部分应由 4 个数字组成
0 投票
1 回答
173 浏览

php - strtotime 将整数转换为时间戳

对于我正在处理的程序,我正在循环数据,我需要知道某条数据是否是日期。

为简单起见,我创建了一个名为 的函数is_date,它看起来像这样:

这似乎有效,但由于某种原因,它返回TRUE整数(不是日期)。

例如:

为什么is_date(165000)返回 TRUE?如何strtotime将 165000 转换为时间戳?

作为修复,我将is_date函数更改为:

0 投票
3 回答
699 浏览

php - 使用序数值时 php strtotime 函数出现问题

在 strtotime 中使用序数值时,我有时会得到意想不到的结果。例如,为什么

结果是“Feb 15”(实际上是 2011 年的第三个星期二?

0 投票
3 回答
636 浏览

php - php strtotime“四舍五入”月底

知道为什么 strtotime 有时会从月底到下个月吗?

结果:
日期为字符串:2011-1-31 00:00:00
日期为 UnixTime:1296450000
UnixTime 返回字符串:2011-01-31 00:00:00
字符串返回 UnixTime:1296450000

日期为字符串:2011-2- 31 00:00:00
日期为 UnixTime:1299128400
UnixTime 返回字符串:2011-03-03 00:00:00
字符串返回 UnixTime:1299128400

日期为字符串:2011-3-31 00:00:00
日期为 UnixTime: 1301544000
UnixTime 返回字符串:2011-03-31 00:00:00
字符串返回 UnixTime:1301544000

日期作为字符串:2011-4-31 00:00:00
日期作为 UnixTime:1304222400
UnixTime 返回字符串:2011-05- 01 00:00:00
字符串返回 UnixTime:1304222400

作为字符串的日期:2011-5-31 00:00:00
日期作为 UnixTime:1306814400
UnixTime 返回字符串:2011-05-31 00:00:00
字符串返回 UnixTime:1306814400

日期作为字符串:2011-6-31 00:00:00
日期作为 UnixTime:1309492800
UnixTime 返回字符串: 2011-07-01 00:00:00
字符串返回 UnixTime:1309492800

日期作为字符串:2011-7-31 00:00:00
日期作为 UnixTime:1312084800
UnixTime 返回字符串:2011-07-31 00:00:00
字符串返回 UnixTime:1312084800

日期作为字符串:2011-8-31 00:00:00
日期作为 UnixTime:1314763200
UnixTime 返回字符串:2011-08-31 00:00:00
字符串返回 UnixTime:1314763200

日期作为字符串: 2011-9-31 00:00:00
日期为 UnixTime:1317441600
UnixTime 返回字符串:2011-10-01 00:00:00
字符串返回 UnixTime:1317441600

日期作为字符串:2011-10-31 00:00:00
日期作为 UnixTime:1320033600
UnixTime 返回字符串:2011-10-31 00:00:00
字符串返回 UnixTime:1320033600

日期作为字符串:2011-11-31 00:00:00
日期作为 UnixTime:1322715600
UnixTime 返回字符串:2011-12-01 00:00:00
字符串返回 UnixTime: 1322715600