- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 javascript 将 JS 日期对象转换为 php Y-m-d 字符串,因为该值将被插入到 mysql 日期时间数据类型中。下面的代码可以解决这个问题,但是很困惑,有其他选择吗?
var jsDateObj = new Date,
phpYear = jsDateObj.getFullYear(),
phpMonth = jsDateObj.getMonth() + 1,
phpDate = jsDateObj.getDate(),
phpDate = phpYear + "-" + (10 > phpMonth ? "0" + phpMonth : phpMonth) + "-" + (10 > phpDate ? "0" + phpDate : phpDate);
console.log(phpDate); // 2015-10-02
最佳答案
为此我创建了一个函数。
程序:
/**
* A javascript function which behaves like date function PHP
*
* Here we have left some options
*
* Arguments:
* <format>: Format in which date needed
* <dateObj>; Date object( optional,if its not given then it returns today's date)
*
* Return Type: String
*/
function date(format, dateObj) {
// If user has not given date obj,
// then provide the today's date.
if (dateObj) {
dateObj = new Date();
}
/*************************************
* CONFIGURATION VARIABLES *
**************************************/
var shortDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var fullDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var shortMonth = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var formatArr = format.split("");
/*******************************************
* HELPER FUNCTIONS *
********************************************/
/**
* Function to convert a single digit number into
* two digit string.
*
* Arguments:
* <num>: which will be converted into two digit.
*
* Return Type: String
*/
function twoDigit(num) {
num = num.toString();
return (num.length == 1) ? '0' + num : num;
}
/**
* Function to check wheather a given year is leap year or not
*
* Arguments:
* <year>: year which will be tested
*
* Return Type: true: or false
*/
function isLeapYear(year) {
return ( year%4) ? false : ((year % 100) ? true : (year % 400) ? false : true);
}
/**
* Function to return suffix like st 2nd
*
* Arguments:
* <num>: number
*
* Return Type: String
*/
function suffix(num) {
num = parseInt(num);
if (num >= 10 && num <=20 ) {
return 'th';
}
num = ((num.toString()).length >= 2) ? parseInt((num.toString())[(num.toString()).length - 1]) : num;
switch(num) {
case 0: return 'th';
case 1: return 'st';
case 2: return 'nd';
case 3: return 'rd';
case 4: return 'th';
case 5: return 'th';
case 6: return 'th';
case 7: return 'th';
case 8: return 'th';
case 9: return 'th';
}
}
// Main logic starts from here.
var dateStr = '';
for (var i = 0; i < formatArr.length; i++) {
switch(formatArr[i]) {
case 'd': // The day of the month (from 01 to 31)
dateStr += '' + twoDigit(dateObj.getDate());
break;
case 'D': // A textual representation of a day (three letters)
dateStr += '' + shortDays[dateObj.getDay()];
break;
case 'j': // The day of the month without leading zeros (1 to 31)
dateStr += '' + dateObj.getDate();
break;
case 'l': // A full textual representation of a day
dateStr += '' + fullDays[dateObj.getDay()];
break;
case 'N':
case 'S': // The English ordinal suffix for the day of the month (2 characters st, nd, rd or th. Works well with j)
dateStr += '' + suffix(dateObj.getDate());
break;
case 'w': // A numeric representation of the day (0 for Sunday, 6 for Saturday)
dateStr += '' + dateObj.getDay();
break;
case 'z':
case 'W':
case 'F': // A full textual representation of a month (January through December)
dateStr += '' + monthNames[dateObj.getMonth()];
break;
case 'm': // A numeric representation of a month (from 01 to 12)
dateStr += '' + twoDigit(dateObj.getMonth() + 1);
break;
case 'M': // A short textual representation of a month (three letters)
dateStr += '' + shortMonth[dateObj.getMonth()];
break;
case 'n': // A numeric representation of a month, without leading zeros (1 to 12)
dateStr += '' + (dateObj.getMonth() + 1);
break;
case 't': // The number of days in the given month
switch(dateObj.getMonth()) {
case 0: dateStr += '' + 31; break;
case 1: dateStr += '' + ((isLeapYear(dateObj.getFullYear())) ? 29 : 28 ); break;
case 2: dateStr += '' + 31; break;
case 3: dateStr += '' + 30; break;
case 4: dateStr += '' + 31; break;
case 5: dateStr += '' + 30; break;
case 6: dateStr += '' + 31; break;
case 7: dateStr += '' + 31; break;
case 8: dateStr += '' + 30; break;
case 9: dateStr += '' + 31; break;
case 10: dateStr += '' + 30; break;
case 11: dateStr += '' + 31; break;
}
break;
case 'L': // Whether it's a leap year (1 if it is a leap year, 0 otherwise)
dateStr += '' + (isLeapYear(dateObj.getFullYear()) ? 1:0);
break;
case 'o':
case 'Y': // A four digit representation of a year
dateStr += '' + dateObj.getFullYear();
break;
case 'y': // A two digit representation of a year
dateStr += '' + (dateObj.getFullYear().toString()).substring(2,4);
break;
case 'a': // Lowercase am or pm
dateStr += '' + (dateObj.getHours() >= 12) ? 'pm' : 'am';
break;
case 'A': // Uppercase AM or PM
dateStr += '' + (dateObj.getHours() >= 12) ? 'PM' : 'AM';
break;
case 'B':
case 'g': // 12-hour format of an hour (1 to 12)
dateStr += '' + ((dateObj.getHours() > 12 || dateObj.getHours() == 0) ? Math.abs(dateObj.getHours() - 12) : dateObj.getHours());
break;
case 'G': // 24-hour format of an hour (0 to 23)
dateStr += '' + dateObj.getHours();
break;
case 'h': // 12-hour format of an hour (01 to 12)
dateStr += '' + twoDigit(((dateObj.getHours() > 12 || dateObj.getHours() == 0) ? Math.abs(dateObj.getHours() - 12) : dateObj.getHours()));
break;
case 'H': // 24-hour format of an hour (00 to 23)
dateStr += '' + twoDigit(dateObj.getHours());
break;
case 'i': // Minutes with leading zeros (00 to 59)
dateStr += '' + twoDigit(dateObj.getMinutes());
break;
case 's': // Seconds, with leading zeros (00 to 59)
dateStr += '' + twoDigit(dateObj.getSeconds());
break;
case 'e':
case 'I':
case 'O':
case 'P':
case 'T':
case 'Z':
case 'c':
case 'r':
case 'U': // The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
dateStr += '' + Date.parse(dateObj.toString());
break;
default: dateStr += formatArr[i];;
break;
}
}
return dateStr;
}
// doc:
// Availabe PHP formats
/************************
-- d - The day of the month (from 01 to 31)
-- D - A textual representation of a day (three letters)
-- j - The day of the month without leading zeros (1 to 31)
-- l (lowercase 'L') - A full textual representation of a day
N - The ISO-8601 numeric representation of a day (1 for Monday, 7 for Sunday)
-- S - The English ordinal suffix for the day of the month (2 characters st, nd, rd or th. Works well with j)
-- w - A numeric representation of the day (0 for Sunday, 6 for Saturday)
z - The day of the year (from 0 through 365)
W - The ISO-8601 week number of year (weeks starting on Monday)
-- F - A full textual representation of a month (January through December)
-- m - A numeric representation of a month (from 01 to 12)
-- M - A short textual representation of a month (three letters)
-- n - A numeric representation of a month, without leading zeros (1 to 12)
-- t - The number of days in the given month
-- L - Whether it's a leap year (1 if it is a leap year, 0 otherwise)
-- Y - A four digit representation of a year
-- y - A two digit representation of a year
-- a - Lowercase am or pm
-- A - Uppercase AM or PM
-- g - 12-hour format of an hour (1 to 12)
-- G - 24-hour format of an hour (0 to 23)
-- h - 12-hour format of an hour (01 to 12)
-- H - 24-hour format of an hour (00 to 23)
-- i - Minutes with leading zeros (00 to 59)
-- s - Seconds, with leading zeros (00 to 59)
e - The timezone identifier (Examples: UTC, GMT, Atlantic/Azores)
I (capital i) - Whether the date is in daylights savings time (1 if Daylight Savings Time, 0 otherwise)
O - Difference to Greenwich time (GMT) in hours (Example: +0100)
P - Difference to Greenwich time (GMT) in hours:minutes (added in PHP 5.1.3)
T - Timezone abbreviations (Examples: EST, MDT)
Z - Timezone offset in seconds. The offset for timezones west of UTC is negative (-43200 to 50400)
c - The ISO-8601 date (e.g. 2013-05-05T16:34:42+00:00)
r - The RFC 2822 formatted date (e.g. Fri, 12 Apr 2013 12:01:05 +0200)
-- U - The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
==========================================================================
January - 31 days
February - 28 days; 29 days in Leap Years
March - 31 days
April - 30 days
May - 31 days
June - 30 days
July - 31 days
August - 31 days
September - 30 days
October - 31 days
November - 30 days
December - 31 days
*************************/
使用方法:
var date = date("Y-m-d", new Date('205-09-09'));
如果您没有传递日期对象,那么默认情况下它将返回今天的日期。
关于javascript - 使用 javascript 将 Javascript 日期对象转换为 php Y-m-d 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32914431/
我的数据库中有两张表,一张用于 field ,另一张用于预订。我需要的是一个查询来选择所有未预订的 field 。见下文: 餐 table 预订具有以下字段: bk_id venue_id 作为(预订
嗨,我是编码新手,我有一些培训项目,其中包括从 HTML 表单输入 MySQL 数据库。它就像你玩过的游戏的日志。第一个日期输入是您开始游戏的时间,第二个日期输入是您完成游戏的时间。但我需要检查器或类
我是这个 sql 编码的新手,我正在尝试学习新的东西。因此,我创建了一个交货表,其中包含一些属性,如商品代码、交货日期、交货数量。所以如何从同一张表中获取第一个交货日期(最小日期)和交货数量以及最晚交
我从支付网关返回了这个日期 2014-05-15T08:40:52+01:00 我得到 2014-05-15T08:40:52 但我无法识别时区 +01:00 的含义 我的位置时区是 UTC−06:0
我快要疯了,请帮忙。 我有一列包含日期时间值。 我需要找到每天的最小值和最大值。 数据看起来像这样 2012-11-23 05:49:26.000 2012-11-23 07:55:43.000
我从 json 数据中获取日期为 2015 年 4 月 15 日晚上 10:15我只想在 html 页面中显示 json 响应数据的时间,例如 10:15 PM这里我放了我的js函数和html代码 J
是否有 javascript 库或其他机制允许我将 .NET 日期/时间格式字符串(即 yyyy-MM-dd HH:mm:ss)传递给 javascript函数并让它相应地解析提供的日期时间值?我一直
我正在使用以下代码以正确的格式获取当前的 UTC 时间,但客户返回并要求时间戳现在使用 EST 而不是 UTC。我搜索了 Google 和 stackoverflow,但找不到适用于我现有代码的答案。
我有以下日期的平均温度数据。我想找到连续至少 5 天低于或高于 0 摄氏度的开始日期。 date_short mean.temp 1 2018-05-18 17.54 2 2018-05-19
它可以在其他网络浏览器中使用,但 IE11 返回无效日期。 为了调试我使用了下面的代码。 console.log('before - ' + date.value); date.value = new
我在 Excel 中有一个数据的 Web 提取,其中日期列带有/Date(1388624400000)/。我需要在 Excel 中将其转换为日期。 最佳答案 能够从 here 中推断出它. 假设字符串
嗨,我的 Schmema 有一个带有 ISO 日期的字段: ISODate("2015-04-30T14:47:46.501Z") Paypal 在成功付款后以该形式返回日期对象: Time/Date
我的 table : CREATE TABLE `tbdata` ( `ID` INT(10) NOT NULL AUTO_INCREMENT, `PatientID` INT(10) NOT
我正在 Ubuntu 服务器 12.04 中编写一个 shell 脚本,它应该比较日志文件中的一些数据。在日志文件中,日期以以下格式给出: [Mon Apr 08 15:02:54 2013] 如您所
我想使用 GROUP BY WITH ROLLUP 创建一个表并获取总行数而不是 null。 $sql ="SELECT IF(YEAR(transaktioner.datum
我正在创建博客文章,在成功迁移我的博客文件后,当我转到我网站的博客页面时返回一个错误(无法解析其余部分:':“Ymd”'来自'post.date|date: "Ymd"') 我似乎无法确定这是语法错误
我正在尝试获取要插入到 CAML 查询中的月份范围,即:2010-09-01 和 2010-09-30。 我使用以下代码生成这两个值: var month = "10/2010"; var month
如何将代码document.write("直到指定日期")更改为writeMessage(date)中的日期?此外,writeMessage(date) 中的日期未正确显示(仅显示年份)。感谢您帮助解
我在 Windows (XP) 和 Linux 上都尝试过 utime()。在 Windows 上我得到一个 EACCES 错误,在 Linux 上我没有得到任何错误(但时间没有改变)。我的 utim
我正在尝试计算发生在同一日期的值的总和(在 XYZmin 中)。 我的数据看起来像这样, bar <- structure(list(date = structure(c(15622, 15622,
我是一名优秀的程序员,十分优秀!