当前位置: 首页 > 知识库问答 >
问题:

如何在php中将英语日期更改为西班牙语?

高增
2023-03-14

在我的项目中,我将英文日期保存在数据库中作为“Y-m-d”。现在,我想用西班牙语显示日期,格式为2015年5月28日。我该怎么做?我试了下列方法,但没有用。

setlocale(LC_TIME, 'spanish');
echo utf8_encode(strftime("%d %B, %Y",strtotime($date)));

当我打印setlocale时,它返回bool(false)。还有别的办法吗?

共有3个答案

徐凌
2023-03-14

这应该行得通:

echo date("d M, Y", strtotime($date));
陆宏壮
2023-03-14

您应该使用以下选项:

setlocale(LC_TIME, 'es_ES');

// or (to avoid utf8_encode) : setlocale(LC_TIME, 'es_ES.UTF-8');
路昆杰
2023-03-14

我建议改用intl函数库,例如IntlDateFormatter。这将允许您输出本地化数据,而无需使用setlocale()更改全局区域设置。

Intl库还允许您查看支持的区域设置列表,您可以使用var_dump(ResourceBundle::getLocales(“”))

示例:https://3v4l.org/BKCRo(注意如何setlocale(LC_ALL,'es_ES')对输出没有影响。

$esDate = datefmt_create('es_ES', //output locale
    \IntlDateFormatter::FULL, //date type
    \IntlDateFormatter::NONE, //time type
    'America/Los_Angeles', //time zone
    IntlDateFormatter::GREGORIAN, //calendar type
    'dd LLLL, YYYY'); //output format
echo $esDate->format(new \DateTime);

结果:

18 diciembre, 2017

有关支持的日期格式模式的列表,请参阅:http://userguide.icu-project.org/formatparse/datetime

请注意,setlocale(),每个系统都是不同的,并非所有的语言环境都能被PHP和服务器操作系统所支持。

使用Linux时,您可以使用locale-a从控制台终端或系统('locale-a',$locales);var_dump($locales);从PHP内部,以确定支持的系统区域设置。

使用Windows时,您可以通过导航到控制面板来查看系统支持的区域设置-

如果使用setlocale(),请确保在所需区域设置的数组中提供所有可能的变体,按照从左到右的优先级顺序,以减少返回false的可能性。

例如

setlocale(LC_TIME, array('es_ES.UTF-8', 'es_ES', 'es-ES', 'es', 'spanish', 'Spanish'));

 类似资料:
  • 我在Java执行HTTP GET调用以获取可能包含西班牙语字符的内容,例如:@añez 但我从MySQL-:'a:±ez得到的回应是,到目前为止,我在网上搜索并做了以下操作: > 在连接字符串中追加了utf-8作为编码(使用Java)jdbc:mysql:/localhost:3306/dbname?useUnicode=true&characterencoding=utf-8 更新了表的编码AL

  • 问题内容: 我正在尝试做一个简单的日期格式,它确实很好用,很简单,但是问题是语言。我使用语言环境“ es_ES”而不是“ Wednesday”来获取“Miércoles”,并进行了类似排序,但是我失败了。 这是我的代码: 字符串的EXPECTED值为: Miércoles4 de Abril de 2012 但我仍然得到: 2012年4月4日星期三 我究竟做错了什么? 问题答案: “ es_ES”

  • 问题内容: 我有java.util.logging可以将输出打印到文件中。它工作正常。但是,消息包含中文字符,它们对应于 日志级别 和消息记录的时间。 如何使它打印英文而不是中文字符? 这是当前消息的样子 问题答案: 通过在命令行中传递语言以覆盖操作系统的当前默认语言来启动应用程序。

  • 我使用HtmlCleaner库来解析/转换java中的HTML文件。 似乎无法处理像“Áák NUÍíNU NU NU NU NU”这样的西班牙语字符 我可以在HtmlCleaner中设置任何属性来处理此解决方案或任何其他解决方案吗?这是我用来调用它的代码:

  • 绝影是在宾馆里首先见到BOSSLiu的,见面第一句话他正要问:“BOSS啊,最近有啥研究成果没有?拿出来分享分享。”哪晓得这次被BOSSLiu抢了先,只不过这次他万分激动地说:“BOSS啊,我发现现在金子遍地都是,剩下的就是如何去拣了!” BOSSLiu一改往日的习惯,这反而让绝影不知如何应对了。比如写程序,以前习惯用_snprintf,现在突然又冒出个_snprintf_s来,一时间竟不知道从哪

  • 我有下面的代码,从今天算出6个月前的日期。 但是,我希望六个月采用“%Y%m%d”格式。 谢谢你的帮助。