php 24小时格式的日期转换为12小时的日期

本文介绍了一款用于商城限时秒杀功能的JS时间选择插件,并解决了其24小时制时间格式与12小时制时间格式转换的问题。文章详细描述了如何利用PHP的DateTime对象进行时间格式转换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天下午做一个商城站,用到限时秒杀的功能。需要一个js选择时间的插件,从网上down了一个,插件是选择到秒的,24小时制。需要把

转换为12小时制的。本来使用的是 strtotime 函数,但是发现24小时制的字符串在使用这个函数转换为时间戳的时候会强制转换为12小时制的上午的格式,这样,只要用这个插件选择了超过十二点的时间,就会出现错误。所以,要做的就是把24小时的时间转换为12小时制的时间。

经测试,要时间格式,需要先创建一个 DateTime 时间对象。方法为

然后,使用

将日期对象转换为想要的格式,就OK了。这个函数直接转换字符串是不行的。这也是我刚开始一直转换失败的原因。

具体过程为:

其中,data数组的start_time参数为传递过来的时间格式的字符串。

 

tips:在解决时间戳问题的时候,原来转换时,还遇到了一个问题,就是误将date参数设置为 Y-m-d h:m:s

结果在上传之后,发现时间一直有错误。后来才发现,分钟误设置为了m,而m在date中表示的是月份。

但是在请教同事的时候,同事说,m参数在这种情况

也就是不显示年月,只显示时分秒的时候用m是可以代表分钟的。但是经过测试,并不是这样。在这种情况下,时间戳的转换依然会出现原先的错误。

所以得出结论,m只可以作为月的参数在这个函数中使用。

tips:strtotime函数可以将字符串格式的时间转换为时间戳。如果传入了下午的时间,需要将上午下午的信息放在最后。

即可。

至于DateTime对象有没有办法转换为时间戳的方法?有,感觉那个函数格式有点麻烦,就未尝试使用。

转载于:https://www.cnblogs.com/wyf1992/p/6166284.html

<think>我们正在处理一个关于Java日期格式转换的请求。用户要求一个示例,展示如何在Java中将日期从一种格式转换为另一种格式。 根据引用[1]中,我们看到一个使用java.sql.Date的例子,但用户可能需要更通用的日期转换(如字符串之间的转换)。 引用[2]提到了日期格式模型,这可以用于格式化输出。 引用[3]和[4]虽然与PHP日期定义相关,但对我们当前问题帮助不大。 引用[5]是关于JSON序列化的,与日期格式转换无关。 因此,我们将重点放在Java中的日期格式转换上。在Java中,我们通常使用`SimpleDateFormat`(Java 8之前)或`DateTimeFormatter`(Java 8及以后)来进行日期格式转换。 考虑到用户可能使用不同版本的Java,我们可以提供两种方式的示例。 步骤: 1. 解析原始日期字符串(按照原始格式) 2. 将解析后的日期对象格式化为目标格式的字符串 注意:在Java 8之前,我们使用`java.util.Date`和`SimpleDateFormat`;在Java 8及以后,推荐使用`java.time`包中的类(如`LocalDate`、`LocalDateTime`)和`DateTimeFormatter`。 我们将分别提供两个示例:一个使用`SimpleDateFormat`(适用于旧版Java),另一个使用`DateTimeFormatter`(适用于Java 8+)。 另外,引用[1]中使用了`java.sql.Date`,但请注意`java.sql.Date`是`java.util.Date`的子类,主要用于数据库操作。在格式转换上,我们可以使用相同的`SimpleDateFormat`。 示例要求:将字符串"2021-07-21"转换为"21/07/2021"(即从yyyy-MM-dd到dd/MM/yyyy)。 示例1:使用SimpleDateFormat(Java 8之前) 示例2:使用DateTimeFormatter(Java 8+) 同时,我们也要注意异常处理(如ParseException)。 另外,根据引用[2]中提到的长日期格式,我们也可以展示如何输出长格式日期(例如,包含星期几和月份全名)。 最后,生成相关问题。 注意:根据系统指令,所有行内数学表达式使用$...$,独立公式使用$$...$$,但本问题不涉及数学公式,所以可以忽略。使用中文回答。</think>### Java日期格式转换示例 在Java中进行日期格式转换,主要涉及`SimpleDateFormat`(Java 8之前)或`DateTimeFormatter`(Java 8+)类。以下是两种常用方法的示例: #### 方法1:使用`SimpleDateFormat`(Java 8之前) ```java import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatExample { public static void main(String[] args) { try { // 原始日期格式 String originalDate = "2023-10-15"; SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); // 目标日期格式 SimpleDateFormat outputFormat = new SimpleDateFormat("dd/MM/yyyy"); // 转换过程 Date date = inputFormat.parse(originalDate); String convertedDate = outputFormat.format(date); System.out.println("转换结果: " + convertedDate); // 输出: 15/10/2023 } catch (Exception e) { e.printStackTrace(); } } } ``` #### 方法2:使用`DateTimeFormatter`(Java 8+) ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class DateFormatJava8 { public static void main(String[] args) { // 原始日期格式 String originalDate = "2023-10-15"; // 定义格式器 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd MMM yyyy", Locale.ENGLISH); // 转换过程 LocalDate date = LocalDate.parse(originalDate, inputFormatter); String convertedDate = date.format(outputFormatter); System.out.println("转换结果: " + convertedDate); // 输出: 15 Oct 2023 } } ``` #### 关键说明: 1. **格式符号**: - `yyyy`:4位年份 - `MM`:2位月份(01-12) - `dd`:2位日期(01-31) - `HH`:24小时小时 - `mm`:分钟 - `ss`:秒 - `EEE`:星期缩写(如Mon) - `MMMM`:月份全名(如October) 2. **时区处理**: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); ``` 3. **本地化支持**: ```java DateTimeFormatter formatter = DateTimeFormatter .ofPattern("dd MMM yyyy", Locale.CHINA); // 中文格式 ``` 4. **线程安全**: - `SimpleDateFormat`非线程安全,建议每次使用创建新实例 - `DateTimeFormatter`是线程安全的[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值