如何定义日期格式?

时间:2010-10-21 17:33:13

标签: java date-format

我有int号码2455449,我知道这代表日期09/09/2010。如何定义使用的日期格式?我需要以这种格式生成一个新日期。它将用于http请求。我想那是朱利安,但我不确定。我试图将此数字转换为日期,但它没有返回09/09/2010的正确日期。可能是我使用了错误的SimpleDateFormat("mm/dd/yy")或Calendar.XXXX(例如Calendar.DAY_OF_YEAR

3 个答案:

答案 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!

http://blog.stevenlevithan.com/archives/date-time-format

答案 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。