gpt4 book ai didi

java - 使用 jQueryUI datepicker 和 php 获取一系列日期(西类牙语)

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:10 24 4
gpt4 key购买 nike

我正在尝试通过 2 个先前翻译为西类牙语的日期选择器保存用户将填写的日期范围。

问题是,当我在日期上使用 strtotime() 时,它会将月份作为日期,反之亦然。

示例:我选择 2017 年 5 月 27 日,但返回值的日期格式不正确,因为月份是 27。如果我选​​择 2017 年 5 月 01 日,则它在数组中显示为 2017 年 1 月 05 日。

以下是我用来从输入文本中获取日期并生成日期之间的范围的函数

function takedates() {
if(isset($_POST['repS'])){
$dateStart = $_POST['txtdesde'];
$dateEnd = $_POST['txthasta'];
$fechaArray = generafechas($dateStart,$dateEnd);
}

function generafechas($date1,$date2){
$fecharray = array();
if (is_string($date1) === true){
$deit1 = strftime("%d-%m-%Y",strtotime($date1));
}
if (is_string($date2) === true){
$date2 = strftime("%d-%m-%Y",strtotime($date2));
}
do {
$fecharray[] = date("m-d-Y", $date1);
$date1 = strtotime("+1 day", $date1);
} while($date1 <= $date2);
return $fecharray;
}
?>

我的问题是:如何用西类牙日期格式的日期填充数组?

PS:我已经在使用这些函数的文件中使用了 setLocale(LC_TIME,'es_ES'),并且输入显示的日期类似于“dd/mm/yyyy”

最佳答案

strtotime 解析日期时间字符串时不会考虑您的区域设置。如果您使用由斜杠分隔的日期,则假定为美式 m/d/y。如果您使用由句点分隔的日期(如果年份是四位数,则使用破折号),则假定为世界其他地区风格(d.m.yd-m-Y)。 (请注意,如果您仅使用两位数年份并使用破折号,PHP 将尝试将其解析为 y-m-d。)

您应该使用 date-create-from-format / DateTime::createFromFormat 而不是 strtotime获取 DateTime 对象,然后从中构建日期字符串。

根据评论进行更新:为了获得您想要的输出,您需要使用 intl 扩展的 IntlDateFormatter class进行输出。

要修改上面的代码(未经测试):

function generafechas($date1,$date2){
$fecharray = array();

if (is_string($date1) && is_string($date2)){
// These lines assume the input is formatted `day-month-year`,
// with 2-digit day and month, and 4-digit year.
$date1 = DateTime::createFromFormat('d-m-Y', $date1)
$date2 = DateTime::createFromFormat('d-m-Y', $date2)
} else {
throw new InvalidArgumentException('Must provide two date strings');
}

// Create the formatter
$formatter = IntlDateFormatter::create('es_ES', null, null, null, null, "d 'de' MMMM 'del' yyyy");

do {
// This line prints the first date in the format you chose above
$fecharray[] = $formatter->format($date1);
$date1->add(new DateInterval("P1D")); // `P1D` means "Duration of 1 Day" in the ISO 8601 standard
} while($date1 <= $date2);

return $fecharray;
}

如果您随数据一起提供区域设置,则可以根据需要更改 createFromFormat 中使用的格式字符串。

关于java - 使用 jQueryUI datepicker 和 php 获取一系列日期(西类牙语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42488741/

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