我正在访问Dot net Web服务并使用Ksoap库,因为我的Web服务是基于Soap的。
基本上我想保存日期并在列表中显示它们。我不希望将日期转换为任何特定区域或时区。
我来自服务的日期有以下模式请举例说明三个不同的字段。
患者DOB = 1974-05-18T00:00:00
收集日期= 2016-07-27T11:00:00
附件上传日期= 2016-09-28T10:19:23.48
我正在使用以下方法转换它们
public static Date convertStringToDate(String date,String dateFormat)throws Exception {
Date output = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
try {
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
output = simpleDateFormat.parse(date);
} catch (ParseException e) {
throw e;
}
return output;
}
其中dateFormat是" yyyy-MM-dd"而date可以是上面例子中显示的任何字符串。
问题:
1>当我使用该方法转换日期时,我有时会获得准确的时间和日期 2 - ;有时我观察到时间略有变化,比如2到7小时的时间变化。这是由于时区转换 3 GT;有时我观察到一天的转变。假设转换后来自服务器的日期是 2016-09-28T10:19:23.48 ,它变成2016-09-27给我。
什么错了?我怎样才能简单地显示日期,因为它来自Web服务我怎么能得到它,除了直接在字符串中保存日期并通过拆分显示这些字符串。
请帮帮我。
更新
我正在将我的日期对象转换回字符串,以便按以下方式在UI上显示
public static String convertDateToString(Date date,String dateFormat)throws Exception {
String output = "";
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
output = simpleDateFormat.format(date);
} catch (Exception e) {
throw e;
}
return output;
}
答案 0 :(得分:0)
要实现这一点,您需要知道服务器的实际时区和日期格式。如果你已经知道了,那么以下代码段将是有用的
def labelFileBatchProcessor(batch_size, num_epochs=None, what_set="training"):
if what_set == "training":
inputCsv = ["./data/BDRW_train/BDRW_train_1/labels.csv"]
elif what_set == "validation":
inputCsv = ["./data/BDRW_train/BDRW_train_2/labels.csv"]
labelFile_queue = tf.train.string_input_producer(inputCsv, num_epochs=1, shuffle=False)
image_name, image_class = labelFileInit(labelFile_queue)
min_after_dequeue = 50
capacity = min_after_dequeue + 3 * batch_size
filenames = [TRAINING_DIR + image_name + ".jpg"]
files_training = tf.train.string_input_producer(filenames, name="CSVFilenames", shuffle=False)
images = build_images(files_training)
image_name_batch, image_class_batch, images, filenames2 = tf.train.shuffle_batch(
[image_name, image_class, images, filenames], batch_size=batch_size, capacity=capacity,
min_after_dequeue=min_after_dequeue, allow_smaller_final_batch=True)
return image_name_batch, image_class_batch, images, filenames2
答案 1 :(得分:0)
在日期格式上设置时区会为时间戳添加偏移量。并且您的服务器的时间格式不包含任何时区。
删除第simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
行
通常只有在想要考虑区域设置之间的差异时才需要设置时区。