javascript 小时为“12”时的时间格式问题

javascript time formatting issue when hour is "12"

我有一个 PDF 表格,但它需要能够以电子方式或使用老式钢笔填写。因此,它包括使用 "Time In" 和 "Time Out" 的时间计算。为简化起见,该表格相应地包括 select "am" 或 "pm" 的选项。看 form entry sample

所以我想我想出了一个切肉方法,如果以电子方式使用,我可以允许用户以 "h:MM" 格式输入时间并连接 "am" 或 "pm" selection 将结果放入 "h:MM tt" 格式的隐藏字段中,并相应地执行我的时间计算。这个新隐藏字段中的结果适用于除“12:xx”之外的所有时间。当您选择 "pm" 时,连接结果为“0:00 am”,如果您选择 "am",则结果为“12:00 pm”。我不知道如何解决这个问题。这是我用来在隐藏字段中创建结果的代码:

//format for inputted time
var TimeFormat = "h:MM";
// field names
var str1Field = "TimeIn"
var str2Field = "TimeInTT"
// get field values
var str1 = this.getField(str1Field).value;
var str2 = this.getField(str2Field).value;
// concat strings if there is data
if(str1 != "" && str2 != ""){
var res = (TimeFormat, str1) + " " + str2;
event.value = res;
}

"TimeIn"是时间字段"h:MM","TimeIn TT"是"am"或"pm"。非常感谢对此的任何帮助。也许有更好的方法吗?谢谢。

我找到了解决问题的办法。回顾一下,问题是当我试图将格式为 "h:MM" 的字段与提供 "am" 或 "pm" 的单选按钮选项连接并将结果输出到格式为 "h:MM tt",上面的 JavaScript 将适用于除中午 (12:00 pm) 和午夜以外的所有时间。 (12:00 AM)。经过数小时的组合尝试,使用

event.value = res.replace("12:00", "0:00");

给了我想要的结果。同样,这只是计算格式为 "h:MM tt" 的字段时的一个问题。如果它只是一个文本字段,则没有问题。但是,我需要它作为额外时间计算的时间字段。所以完成的脚本在清理后看起来像这样:

 // field names
 var str1Field = "Day1Pd1TimeIn" //Text Field
 var str2Field = "Day1Pd1TimeInPeriod" //Radio Button
 // get field values
 var str1 = this.getField(str1Field).value;
 var str2 = this.getField(str2Field).value;
 // concat strings if there is data
 if(str1 != "" && str2 != "Off")
 {
 var res = str1 + " " + str2;
 event.value = res.replace("12:00", "0:00");
 }

也许这对以后的人有帮助。