页面显示的时间比系统时间少8个小时

数据库中与页面中时间比电脑时间少八个小时

这次在使用数据库写日志的时候,一开始觉得很正常,但是到后面发现数据库里的时间居然不对??
仔细一看,少了八个小时整。少的时间这么整齐,那必然是有什么格式不对。
经过一层一层检查之后,发现,在数据库里储存的的时间格式是时间戳,想想应该是时区不对,就到mybatis的配置文件去看了一眼,果然!在时区的设置是标准时区,不是我们的东八区!!
所以,要把时间设置中的

serverTimezone=GMT

改为

serverTimezone=GMT%2B8

这样在数据库里的时间就对上啦。

但是这样改完之后,数据库的时间是对了,但是取到页面中的时候,发现还是少了八个小时??
有了前面的经验,继续去找格式错误,发现在@JsonFormat注释里,只写了格式,没有规定时区,只要把时区设置也加上就都OK啦~~

timezone="GMT+8"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是实现该功能的基本代码: ``` import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.text.SimpleDateFormat; import java.util.Date; public class MainActivity extends AppCompatActivity { private TextView tvTime; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvTime = findViewById(R.id.tv_time); mediaPlayer = MediaPlayer.create(this, R.raw.music); //使用Handler定时更新时间 final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: //获取当前时间并更新TextView SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String time = sdf.format(new Date()); tvTime.setText(time); //每过一个小时播放音乐 if (time.endsWith("00:00")) { mediaPlayer.start(); } break; } } }; //使用线程定时更新UI new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(1000); Message message = new Message(); message.what = 1; handler.sendMessage(message); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } ``` 解释一下代码: 1.在布局文件中添加一个TextView用于显示时间: ``` <TextView android:id="@+id/tv_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp" android:textStyle="bold" android:gravity="center"/> ``` 2.在MainActivity中初始化TextView和MediaPlayer,并使用Handler和Thread实现定时更新UI和播放音乐。其中,Handler用于在UI线程中更新TextView和播放音乐,Thread用于在子线程中不断地通过Handler更新UI。 3.在AndroidManifest.xml文件中添加如下权限,用于访问系统时间和播放音乐: ``` <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ``` 注意: 1.本代码使用MediaPlayer播放音乐,在播放前需要确认是否具有该音乐文件的访问权限,否则会出现FileNotFoundException。 2.在Android 9.0以上的版本中,不能使用上述权限,需要申请AndroidManifest.permission.READ_EXTERNAL_STORAGE和AndroidManifest.permission.ACCESS_MEDIA_LOCATION等权限。 3.上述代码加入到android项目中需要根据实际情况做适当的修改才能正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值