在Java程序中,如何将bash脚本中的日期转换为毫秒?

在Java程序中,如何将bash脚本中的日期转换为毫秒?,java,bash,datetime,Java,Bash,Datetime,我正在用Java编写一段代码,需要从bash脚本发送一段时间,并将时间解析为毫秒。当我在日期上检查毫秒转换时,除了我发送的月份是一月而不是三月之外,一切都是正确的 下面是我在bash脚本中创建的变量,稍后在脚本中我将其传递给Java程序: TIME=`date +%m%d%Y_%H:%M:%S` 以下是将时间解析为毫秒的Java代码: String dt = "${scriptstart}"; java.text.SimpleDateFormat scriptStart = new java.

我正在用Java编写一段代码,需要从bash脚本发送一段时间,并将时间解析为毫秒。当我在日期上检查毫秒转换时,除了我发送的月份是一月而不是三月之外,一切都是正确的

下面是我在bash脚本中创建的变量,稍后在脚本中我将其传递给Java程序:

TIME=`date +%m%d%Y_%H:%M:%S`
以下是将时间解析为毫秒的Java代码:

String dt = "${scriptstart}";
java.text.SimpleDateFormat scriptStart = new java.text.SimpleDateFormat("MMDDyyyy_HH:mm:ss");
long start = scriptStart.parse(dt).getTime();
此语句的目标是查找脚本开始与当前系统时间之间经过的时间

为了解决这个问题,我打印了两个:

 System Time = 1269898069496 (converted = Mon Mar 29 2010 16:27:49 GMT-0500 (Central Daylight Time))
 Script Start = 03292010_16:27:45
 Script Start in Milli = 1264804065000 (Converted = Fri Jan 29 2010 16:27:45 GMT-0600 (Central Standard Time))
据该网站称,这两个时间戳均以毫秒为单位打印出正确表示的时间。
DD
应该是字符串格式化程序中的
DD

根据,应该使用“MMddyyyy”而不是“MMddyyyy”。“DD”是一年中的一天,而不是一个月中的一天

这显然会导致它覆盖已解析的月份,从而导致输出为1月29日——一年中的第29天。

您需要使用“dd”而不是“dd”。您使用的是“年中的一天”而不是“月中的一天”

所以改变这个:
newjava.text.simpleDataFormat(“MMDDyyyy\uhh:mm:ss”)

为此:
new java.text.simpleDataFormat(“MMddyyyy\u HH:mm:ss”)

日期命令(顺便说一句,它独立于Bash)将以秒为单位打印纪元后的时间,而无需使用java:

scriptstart=$(date +%s)
echo ${scriptstart}     # example: 1269903559

你能把
日期+%s
的输出发送给它吗;有人否决了这个问题和所有答案。