gpt4 book ai didi

java - 通过 RMI 在不同区域的机器之间发送日期

转载 作者:行者123 更新时间:2023-12-02 08:38:28 24 4
gpt4 key购买 nike

我在通过 RMI 向不同时区的计算机发送 java.util.Date 对象或从不同时区的计算机发送 java.util.Date 对象时遇到问题。

例如,德国的客户端将向英国的服务器发送日期对象。

  1. 用户输入日期字符串,例如20090220。
  2. 德国的客户端应用程序使用 SimpleDateFormat("yyyyMMdd") 将其转换为日期,得出:Fri Feb 20 00:00:00 CET 2009
  3. 英国服务器通过 RMI 接收的日期为:2009 年 2 月 19 日星期四 23:00:00 GMT
  4. 服务器将日期存储到 UK Oracle 数据库 DATE 列

解决日期不正确问题的最佳方法是什么?我可以发送日期字符串并让服务器将其转换为日期,但我想减少服务器必须完成的工作量。

这是一个显示日期序列化的独立测试程序:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class SerializationTest {

public static void main(String[] args) throws Exception {

final String yyyyMMdd = "20090220";
final Date date = new SimpleDateFormat("yyyyMMdd").parse(yyyyMMdd);

if (args.length != 1) {
System.out.println("Usage SerializationTest S|D");
}

boolean serialise = false;
if (args[0].equals("S")) {
serialise = true;
}
else if (args[0].equals("D")) {
serialise = false;
}

String filename = "date.ser";
if (serialise) {
// write the object to file
FileOutputStream fos = new FileOutputStream(filename);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream outputStream = new ObjectOutputStream(bos);
outputStream.writeObject(date);
outputStream.flush();
outputStream.close();

System.out.println("Serialised: " + date);
}
else {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream inputStream = new ObjectInputStream(bis);
Date outDate = (Date) inputStream.readObject();
inputStream.close();

// print the object
System.out.println(outDate);
}
}
}

最佳答案

我不明白你的问题是什么,这些日期对我来说看起来是正确的 - 它们只是被格式化为正在使用的区域设置。如果您希望用户输入的日期采用 GMT,请在 SimpleDateFormat 构造函数中指定区域设置

关于java - 通过 RMI 在不同区域的机器之间发送日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com