Java SimpleDateFormat设置时区导致时间不正确的解决方案

这篇具有很好参考价值的文章主要介绍了Java SimpleDateFormat设置时区导致时间不正确的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题介绍

在Android开发中经常遇到有的接口需要上传当前时间,如果后台要求直接传一个long类型的时间戳还好,因为这个时间戳是跟时区无关的,如果后台接口要求传的是格式化的时间,若本地设备设置的时区与后台要就的时区不一致,就会导致上传的时间不准确。

不完善的写法

这种写法SimpleDateFormat默认用的是本地设备设置的时区,若本地时区与后台约定的不一致就会导致问题

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timestamp = dateFormat.format(new Date());
设置时区

以格式化东八区时间为例,设置时区有以下三种写法,格式化后的时间是一样的

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("Etc/GMT-8"));
System.out.println("方法一:" + dateFormat.format(new Date()));
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
System.out.println("方法二:" + dateFormat.format(new Date()));
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println("方法三:" + dateFormat.format(new Date()));
输出结果

I/System.out: 方法一:2023-03-11 23:16:21

I/System.out: 方法二:2023-03-11 23:16:21

I/System.out: 方法三:2023-03-11 23:16:21文章来源地址https://www.toymoban.com/news/detail-670816.html

到了这里,关于Java SimpleDateFormat设置时区导致时间不正确的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 Docker 部署 Mysql 的时区设置解决方案

    环境版本及条件: 基于 Docker 部署的 Mysql:8.0.27 版本数据库中。 datatime 数据类型的字段设置了默认时间戳 CURRENT_TIME。 SpringBoot + MP。 问题复现: 使用MP插入数据时,该字段的默认时间戳比 Asia/Shanghai 时区少了 8 小时。 问题追因 排查过程: 查看 Mysql 时区配置属性。 查看 Doc

    2024年02月11日
    浏览(51)
  • centos7设置时区,时间+时间同步的三种方式

    1.1查看当前时区: 1.2查看时间命令: 1.3选择时区命令 设置timezone的时区 3.1安装ntp 3.2启动ntp服务 3.3查看ntp服务 3.4修改ntp.conf文件 3.5重启服务 3.6检查同步状态 3.7执行硬件时间向软件时间同步 3.8查看当前时间 4.1最简单的方法,让所有集群中的主机跟某个时间服务器的 时间同步

    2024年02月04日
    浏览(53)
  • Python time时间格式化以及设置时区

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。今天就来讲讲datetime模块。 datetime模块定义了两个常量:datetime.MI

    2024年02月08日
    浏览(77)
  • 通过adb shell 设置android时间(时区)同步

    设置时间同步,时区设置为上海 进入adb shell环境。在计算机上打开终端或命令提示符,并运行以下命令: adb shell 获取root权限(如果设备已经root)。在adb shell环境中运行以下命令:su 启用自动时间同步和自动时区同步。运行以下命令以启用设备的自动时间和自动时区同步:

    2024年02月07日
    浏览(52)
  • Ubuntu、CentOS 修改时区、设置24小时时间格式

     修改设置时区  方法一 tzselect 方法二 仅限于RedHat Linux 和 CentOS系统 timeconfig 方法三 适用于Debian dpkg-reconfigure tzdata 方法四 复制相应的时区文件,替换CentOS系统时区文件;或者创建链接文件 cp /usr/share/zoneinfo/EST5EDT /etc/localtime 或者 ln -s /usr/share/zoneinfo/EST5EDT /etc/localtime 时间同步

    2024年02月05日
    浏览(49)
  • 【Java 基础篇】Java日期和时间格式化与解析指南:SimpleDateFormat详解

    日期和时间在软件开发中经常被用到,无论是用于记录事件、计算时间间隔还是格式化日期以供用户友好的展示。Java 提供了强大的日期和时间处理工具,其中 SimpleDateFormat 类是一个重要的工具,用于格式化日期和时间,同时也支持解析日期和时间。本篇博客将深入探讨 Sim

    2024年02月09日
    浏览(62)
  • 使用Linux命令修改服务器时间及设置时区

    在服务器管理和维护中,准确的系统时间对于保证服务器正常运行和数据一致性至关重要。 而有时候,我们可能需要手动修改服务器上的系统时间,以调整时区、修复时间漂移等问题。 本文将介绍如何使用Linux命令来修改服务器时间。 一、检查当前时间 首先,我们需要使用

    2024年02月21日
    浏览(69)
  • Elasticsearch:自动使用服务器时间设置日期字段并更新时区

    在大多数情况下,你的数据包含一个以 create_date 命名的字段。 即使没有日期字段,处理各种格式和时区的日期对数据仓库来说也是一个重大挑战。 与此类似,如果要检测变化的数据,则必须准确设置日期字段。 在 Elasticsearch 中还有一个选项可以自动将服务器的日期设置为字

    2024年02月08日
    浏览(58)
  • Java中日期时间格式化方法SimpleDateFormat和DateTimeFormatter使用完整示例及区别说明

    示例代码: 示例截图:  这里完整的用两种方法分别实现了日期和String的来回转换,鉴于SimpleDateFormat早已过时,且非线程安全,所以推荐大家首选使用DateTimeFormatter,用法基本都是差不多的。变化不大。但是DateTimeFormatter需要Java Level 8(8 - Lambdas, type annotations etc.),需留意。

    2023年04月09日
    浏览(43)
  • JAVA 时区时间相互转换

            //系统设置为UTC时区         System.setProperty(\\\"user.timezone\\\", \\\"UTC\\\");         //String dateString = \\\"2023-04-06T07:23:36.539767500\\\";         String dateString = \\\"2023-04-06T08:15:06.662Z\\\";         System.out.println(\\\"UTC 时间:\\\"+dateString.subSequence(0, dateString.length()));         String localDateTime1 = LocalD

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包