Javascript-显示mySQL TimeDate中的区域设置时间

Javascript-显示mySQL TimeDate中的区域设置时间,javascript,php,date,timezone,momentjs,Javascript,Php,Date,Timezone,Momentjs,我在显示正确的时间时遇到问题。我有一个php脚本,当点击一个按钮时,它会将当前的时间戳插入数据库。服务器位于亚利桑那州,我在PST。当我在脚本中调用时间时,它会显示亚利桑那时间,但我需要它来显示用户时间。所以2015-02-18 16:06:28亚利桑那州时间,我的时间是2015-02-18 15:06:28 我怎么知道正确的时间。我使用的是moment.js,但无论我如何格式化它,它都会显示错误的时间。我不确定,但DST是否未被考虑 var time_in = time_in;//format

我在显示正确的时间时遇到问题。我有一个php脚本,当点击一个按钮时,它会将当前的时间戳插入数据库。服务器位于亚利桑那州,我在PST。当我在脚本中调用时间时,它会显示亚利桑那时间,但我需要它来显示用户时间。所以2015-02-18 16:06:28亚利桑那州时间,我的时间是2015-02-18 15:06:28

我怎么知道正确的时间。我使用的是moment.js,但无论我如何格式化它,它都会显示错误的时间。我不确定,但DST是否未被考虑

var time_in = time_in;//format 2015-02-18 16:17:33
var timeIn = moment.utc(time_in, "HH:mm a").format("HH:mm a");

看起来您正在使用Javascript获取客户端的时间,但没有将其传递给PHP。我不确定你的应用程序是如何构造的,但你可以用
type=“hidden”
创建一个
input
标记。然后使用Javascript找到元素并将其
值设置为
Date()

以下是一个例子:


现在,当您使用PHP提交此表单时,字段中的值将是客户端的本地时间。

Moment.js
将日期解析为区域设置日期时间。因此,当您执行
矩.utc(time_in)
时,您将根据本地时间(PST)将其转换为utc,向前或向后移动

所以你需要做的是做一个。亚利桑那州是UTC-07:00,因此我们希望向偏移量添加+7。你也可以用同样的方法来做,但这已经被弃用了

var utcTime = moment.utc('2015-02-18 16:06:28').utcOffset(+7).format('YYYY-MM-DD HH:mm:ss')
// returns "2015-02-18 23:06:28" which is the UTC time
现在您有了UTC时间,可以将其转换为客户端本地时间:

moment(moment.utc(utcTime).toDate()).format('YYYY-MM-DD HH:mm:ss')
// returns '2015-02-18 15:06:28' (which is PST)
上面的
moment.utc(utcTime).toDate()
只需将utc时间转换为您的本地时间,然后使用
momentjs


编辑:如果可能,您应该在发送到服务器时使用,这样您就不必处理UTC或时区。您可以使用
moment.unix(unixTimestamp.format('yyyyy-MM-DD HH:MM:ss')转换为本地时间

PHP或Javascript获取时间吗?因为PHP是服务器端,Javascript是客户端。PHP使用now()设置时间;所以,如果我的“时间戳”是2015-02-18 15:00:00,我在PST,我想显示下午14:00或3:00。如果我在EST,我想显示18:00。哦,我误解了。我以为这是关于使用PHP在数据库中输入正确的日期。谢谢trekforever。这是我想要的结果。我没有想到utcOffset(+7)。