我有int
号码2455449,我知道这代表日期09/09/2010。如何定义使用的日期格式?我需要以这种格式生成一个新日期。它将用于http请求。我想那是朱利安,但我不确定。我试图将此数字转换为日期,但它没有返回09/09/2010的正确日期。可能是我使用了错误的SimpleDateFormat("mm/dd/yy")
或Calendar.XXXX(例如Calendar.DAY_OF_YEAR
)
答案 0 :(得分:2)
var now = new Date();
now.format("m/dd/yy");
// Returns, e.g., 6/09/07
// Can also be used as a standalone function
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM
// You can use one of several named masks
now.format("isoDateTime");
// 2007-06-09T17:46:21
// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
now.format("hammerTime");
// 17:46! Can't touch this!
答案 1 :(得分:1)
看起来像一个功能未知的方程式。
f(d,m,y)=D;
其中d表示日期,月份,年份,D表示日期。并且不失一般性,我们可以假设该映射应该是一对一的,即每个有效(d,m,y)组合应该映射到唯一的正整数(> = 0)并且每个正整数必须表示有效且唯一的(d,m,y)元组。因此,函数f的最明显选择(基于日期的属性)是自第一天起经过的天数,这满足了我们的条件。所以现在我们有边界条件。f(d1,m1,y1)=0;
f(9,9,2010)= 2455449;
其中d1,m1,y1表示参考日期,如unix时间戳中的epoch。使用明显的函数(见上文),(d1,m1,y1)出现(10 5 -4713)。所以使用的DatFormat是自4713年6月10日以来经过的天数。大约。
答案 2 :(得分:0)
这是一个Julian day数字,它计算自公元前4713年1月1日格林威治中午以来的天数.Julian's preleptic calendar。
要从JD转换为unix时间戳:
unix_time_stamp = ( JD -2440587.5) * 86400
要从unix时间戳转换为JD:
JD = (unix_time_stamp / 86400) + 2440587.5
请注意,JD从中午开始计算,而不是午夜。这就是为什么在添加结束时它是.5。
更新如果您想在javascript中使用它(自纪元以来使用毫秒)
function dateFromJulianDay(julian_day) {
return new Date( (julian_day - 2440587.5) * 86400000);
}
function dateToJulianDay(date) {
// date should be a javascript Date object
// or a variable with milliseconds since the unix epoch 1 jan 1970
return ( date / 86400000) + 2440587.5;
}
console.log(dateFromJulianDay(2455449));
console.log(dateToJulianDay(new Date(2010,9-1,9)));
请记住,Date构造函数中的月份是0-11,为什么我在上面做-1。