gpt4 book ai didi

javascript - 使用 javascript 将 Javascript 日期对象转换为 php Y-m-d 字符串

转载 作者:行者123 更新时间:2023-12-03 08:45:21 25 4
gpt4 key购买 nike

我需要使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com