JAVA 最简单获取系统时间代码 LocalDateTime( 以yyyy-MM-dd HH:mm:ss.SSS格式显示)

本文介绍了一种使用Java进行时间日期格式化的简单方法,通过LocalDateTime和DateTimeFormatter类,可以轻松获取并打印出当前时间,格式包括年-月-日时-分-秒和包含毫秒的时间戳。

直接上代码,简单粗暴:

 

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @Author : JCccc
 * @CreateTime : 2018-11-27
 * @Description :
 * @Point: Keep a good mood
 **/
public class testMain {

    public static void main(String[] args) {
       // yyyy-MM-dd HH:mm:ss.SSS  ---> 年-月-日 时-分-秒-毫秒   (想删掉哪个小部分就直接删掉哪个小部分)

        String timeStr1=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        String timeStr2=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
        System.out.println("当前时间为:"+timeStr1);
        System.out.println("当前时间为:"+timeStr2);
    }
}

运行结果:

当前时间为:2018-11-27 10:41:47
当前时间为:2018-11-27 10:41:47.392

 

 

好了,就这样。

 

<think>好的,用户想在Java获取当天零点的时间字符串,格式yyyy-MM-dd HH:mm:ss.SSS。我需要先回忆一下Java中处理日期时间的方法。首先,Java 8之后推荐使用java.time包,比如LocalDateTime和LocalDate。用户可能需要获取当天的开始时间,也就是零点,然后格式化成指定的字符串。 首先,如何获取当天的零点时间?LocalDate的atStartOfDay()方法应该可以返回当天的零点时间,类型是LocalDateTime。然后,使用DateTimeFormatter来格式化这个时间。不过要注意,LocalDateTime默认不包含毫秒部分,所以需要确保格式化时包含.SSS。或者用户可能需要精确到毫秒,这时候可能需要使用其他方法。 另外,用户提到的时区问题也需要考虑。如果系统默认时区不是用户需要的,可能需要明确指定时区,比如ZoneId.systemDefault()或者用户指定的时区。 然后,代码示例应该怎么写?例如: LocalDateTime todayStart = LocalDate.now().atStartOfDay(); String formatted = todayStart.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); 不过这里有个问题,LocalDateTime.now()获取的是当前时间,但atStartOfDay()返回的是当天的零点,此时毫秒部分可能都是0,所以格式化后的.SSS可能显示为000。如果用户需要当前的毫秒数,这显然不对,但如果是获取当天的零点,毫秒部分应该为0。所以可能用户的需求是正确的,即显示000。 另外,是否有更可靠的方法来确保获取到当天的零点?比如使用with(LocalTime.MIN),这可能和atStartOfDay()效果一样。 还需要考虑时区的影响,比如使用LocalDate.now(ZoneId)来指定时区,避免服务器时区不同导致的问题。 检查用户提供的引用,特别是引用[2]中提到的时间戳处理和窗口计算,可能与时区或时间戳的获取有关,但用户的问题主要是格式化当天零点的时间。所以重点应放在如何正确获取格式化零点时间。 最后,给出代码示例,并解释每一步的作用,确保用户能理解如何使用。可能还需要提到时区的重要性,以及如何处理不同的时区需求。</think>在Java获取当天零点时间字符串(格式为`yyyy-MM-dd HH:mm:ss.SSS`)可通过以下步骤实现: --- ### 1. 使用`java.time`包(推荐Java 8及以上) ```java import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { // 获取当天零点时间(默认时区) LocalDateTime todayStart = LocalDateTime.now() .with(LocalTime.MIDNIGHT); // 或 .with(LocalTime.of(0, 0, 0)) // 定义格式化器 DateTimeFormatter formatter = DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); // 转换为字符串 String formattedTime = todayStart.format(formatter); System.out.println(formattedTime); // 输出如:2023-10-05 00:00:00.000 } } ``` --- ### 2. 处理时区问题 若需指定时区(如UTC或系统默认时区): ```java LocalDateTime todayStart = LocalDateTime.now(ZoneId.of("Asia/Shanghai")) .with(LocalTime.MIDNIGHT); ``` --- ### 3. 兼容旧版本(Java 7及以下) 使用`Calendar`类: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.TimeZone; public class Main { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); String formattedTime = sdf.format(calendar.getTime()); System.out.println(formattedTime); // 输出如:2023-10-05 00:00:00.000 } } ``` --- ### 关键点说明 1. **`LocalTime.MIDNIGHT`**:表示当天的零点时间。 2. **时区处理**:默认使用系统时区,可通过`ZoneId`显式指定。 3. **格式化`SSS`**:表示毫秒,零点时固定为`000`[^1]。 ---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值